sâmbătă, 16 martie 2019

Știri din domeniul embedded systems and software [16/03/2019]

electrical circuit by Arnau ramos Oviedo on 500px.com


Weekend plăcut tuturor !

AUTOSAR(2) - Arhitectura

Software-ul de bază poate fi împărțit în termeni de stive bazate pe serviciile de bază furnizate, cum ar fi Stack-ul de comunicare (include drivere de comunicare, interfață de comunicație și servicii de comunicații),

Memory Stack (include drivere de memorie, interfață de memorie și servicii de memorie) (include drivere I / O și strat I / O Abstraction).


Architectura completă conținând toate modulele de bază din AUTOSAR :

Există diferite tipuri de interfețe prin care modulele comunică sau schimbă date între ele:

1. Interfețe AUTOSAR: Definește informațiile schimbate între componenta software și modulele BSW. Interfețele AUTOSAR sunt independente de un limbaj de programare, hardware și tehnologie de rețea. Interfețele AUTOSAR sunt utilizate pentru a defini porturile prin intermediul componentei software și a datelor de bază de schimb de software.



2. Interfețele AUTOSAR standardizate: este o interfață AUTOSAR a cărei sintaxă și semantică sunt definite de AUTOSAR. Acestea sunt folosite pentru a furniza serviciile AUTOSAR standardizate ale software-ului de bază pentru componenta software-ului de aplicație.

3. Interfețe standardizate: Acestea sunt interfețele definite într-un limbaj de programare specific și utilizate în cea mai mare parte între module bazate pe același ECU. Modulele din software-ul de bază interacționează între ele folosind interfețe standardizate.



Clase de configurare în AUTOSAR:

1. Pre-compile time: Configurația este folosită pentru a include sau exclude părți ale codului sursă care nu sunt necesare în timpul rulării. Configurațiile de timp precompilate sunt statice, în care modulele software vor fi eficiente, bazate pe configurație, după timpul de compilare. Rezultă optimizarea dimensiunii și performanței codului. Configurațiile de timp precompilate se fac în fișierele * _Cfg.c și * _Cfg.h, '*' specifică numele modulului.

2. Link time: Acest tip de configurare este utilizat atunci când fișierele de configurare sunt disponibile ca cod de obiect. Codul obiect al software-ului primește părți ale configurației din alt fișier de cod obiect sau este definit prin opțiuni de linker. Configurația este selectată după compilare și înainte de conectare. Configurațiile disponibile în fișiere separate sunt considerate ca fiind constante externe. Conexiunile de "link time" se fac în fișierele * _Lcfg.c și * _Lcfg.h, '*' specifică numele modulului.

3. Post-build time: Configurarea modulului software este posibilă după construirea software-ului complet. O referință la configurație este disponibilă și configurația reală este disponibilă în timpul intermitentă a ECU-ului. Aceasta crește reutilizarea, astfel încât același ECU poate fi refolosit într-o altă mașină prin furnizarea unui set diferit de configurație ECU. Post-build configurațiile de timp se fac în fișierele * _PBcfg.c și * _PBcfg.h, '*' specifică numele modulului.




Post-build Loadable: În acest set de configurații, este disponibilă o structură de configurare, iar membrii individuali ai structurii pot fi modificați, dar o structură complet diferită nu poate fi selectată.


Post-build Selectable: În acest set de setări, pot fi disponibile seturi de configurare 'n' și un set complet poate fi selectat în timpul rulării a ECU-ului. Acestea sunt în mare parte disponibile ca o serie de structuri în care un set este selectat în timpul rulării pe ECU (în start-up init).


luni, 11 martie 2019

Meștereala de luni (8) - Suport ASUS Tinkerboard

Descriere proiect:

Încă o zi de luni și încă un suport. De data asta mi-a trebuit un suport pentru placa tinkerboard ce stătea alandala. S-a potrivit perfect ... bineînțeles după îndelungi măsurători . Modelul este destul de simplist, dar eficient . Se monteaza cu două holșuruburi de peretele interior al biroului, iar rezultatul final se vede în poza de mai jos . Brici :D

Model:

Model pe thingiverse.com

Rezultat:

O zi bună tuturor !

duminică, 10 martie 2019

Fițuica cu formule electronice (7)

Luate de pe net :


Weekend fain tuturor !

AUTOSAR(1) Prezentare generală

AUTOSAR (Automative Open Architecture System) este un standard de dezvoltare a software-ului cu versiuni deschise, pentru, dar fără a se limita la, unitatea electronică de control pentru automobile (ECU).

AUTOSAR oferă o structură stratificată de sus în jos a software-ului cu relația dintre componentele software.

Arhitectura în straturi a AUTOSAR poate fi împărțită în software-ul de bază (BSW), Runtime Environment (RTE) și stratul de aplicație / componentă software.

Nivelul de bază software poate fi subdivizat în continuare în stratul de abstractizare microcontroler (MCAL), stratul de abstracție ECU, stratul de servicii și stratul driverului complex de dispozitive (CDD).


Micro-controlerul Abstraction Layer (MCAL) este cel mai mic strat din arhitectura AUTOSAR stratificat și comunică direct cu hardware-ul. Responsabilitatea sa principală este de a face stratul de deasupra acestuia independent de hardware. Acesta găzduiește driverele de nivel scăzut ale microcontrolerului.



Suprafața de suprapunere ECU este stratul deasupra stratului MCAL care găzduiește componentele de interfață și driverele componentelor hardware în afara microcontrolerului de pe ECU. Responsabilitatea sa principală este de a face stratul de deasupra acestuia independent de hardware-ul disponibil pe ECU. Interfețele sale inferioare sunt dependente de hardware, iar interfețele superioare sunt independente de hardware.




Stratul de servicii este stratul de deasupra stratului de abstractizare ECU, în mare parte independent de hardware și responsabil pentru furnizarea funcționalității BSW de bază a aplicației.



Runtime Environment este stratul care separă software-ul de bază și software-ul aplicației. Arhitectura software de deasupra devine nivel de componentă decât arhitectura cu straturi din Software-ul de bază. RTE este instanțierea nivelului ECU a magistralei de funcții virtuale (VFB). RTE este specifică ECU. Componentele software de aplicație fără BSW comunică între ele prin busul de funcții virtuale (VFB).



Driverul complex de dispozitive (CDD) este un strat prin care hardware-ul poate fi accesat prin RTE de către componenta software-ului de aplicație direct fără a trece prin diferitele straturi ale AUTOSAR. Acest strat este utilizat de aplicațiile care au constrângeri mari de sincronizare și de cerințele care nu sunt descrise de AUTOSAR. Acest strat este dependent de micro-controler și ECU.


vineri, 8 martie 2019

Mini proiectul de vineri (12) - Servo motor

Descriere proiect:
Azi am la teste un servomotor simplu cu trei pini VCC, GND si pinul de comanda. Am folosit pinul 2 de pe placa Arduino, care are și PWM. Pentru acest servomotor a trebui sa-i conectez o sursa de tensiune de minim 6V pentru că motorașul consumă mai mult curent decât curentul furnizat de placa Arduino. GND-ul l-am conectat comun pentru a avea aceeași masă pentru Arduino și servomotor. În circuit am folosit un acumulator de 7.2V si 1600 mAh, o placă distribuitor cu întrerupător de la o dronă mai veche. Servomotorul s-a încălzit un pic și sincer nu știu dacă e normal sau este acumulatorul un pic prea puternic. Funcționează destul de bine, și o să încerc să mai conectez încă un servomotor să observ dacă accumulatorul poate să furnizeze suficient curent pentru mai multe servomotoare.

Documentatie proiect:


Componente:


Schema electronica/sistem:

Cod de test: L-am programat să se învârtă 180 grade într-un sens și invers. Merge brici :D
//Servos
#include "servo.h"
Servo myservo;  // create servo object to control a servo 
int pos = 0;    // variable to store the servo position
void setup() {
  Serial.begin(9600);

  myservo.attach(2);  //the pin for the servo control

  Serial.println("Servo motor v1 "); 
}

void loop() {

  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(50);                       // waits 50ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(50);                       // waits 50ms for the servo to reach the position
  }
}
O seară bună tuturor !

vineri, 1 martie 2019

Mini proiectul de vineri (11) - Modul senzor magnetic (Hall)

Descriere proiect:
Astăzi o să testez un senzor Hall, care măsoara un câmp magnetic. Modulul are 4 pini , A0 (tensiunea măsurată de senzor),GND, VCC (5V),D0 (se seteaza la 5 V în momentul în care se atinge pragul setat). Principiul de funcționare a unui senzor Hall se bazează pe semiconductorul Indium antimonide invelit intr-un strat de aluminiu, care detectează un câmp magnetic. Explicațiile fizice sunt un pic mai complicate, dar în mare cam asta ar fi , practic daca un semiconductor, traversat de un curent electric, este supus acțiunii unui câmp magnetic perpendicular pe direcția curentului se manifestă prin apariția unei tensiuni, denumită tensiune Hall.

Documentatie proiect:


Componente:


Schema electronica/sistem:

Cod de test:
// Declaration and initialization of the input pin
int Analog_In = A0; // magnetic field 
int Digital_In = 8; // Threshold reached (ON/OFF)
  
void setup ()
{
  pinMode (Analog_In, INPUT);
  pinMode (Digital_In, INPUT);
       
  Serial.begin (9600); // Serial output with 9600 bps
}
  
// The program reads the current value of the input pins
// and output it via serial out
void loop ()
{
  float Analog;
  int Digital;
    
  // Current value will be read and converted to the voltage
  Analog = analogRead (Analog_In) * (5.0 / 1023.0); 
  Digital = digitalRead (Digital_In);
    
  // and outputted here
  Serial.print ("Analog voltage value:"); Serial.print (Analog, 4);  Serial.print ("V, ");
  Serial.print ("Extreme value:");
  
  if(Digital==1)
  {
      Serial.println (" reached");
  }
  else
  {
      Serial.println (" not reached yet");
  }
  Serial.println ("----------------------------------------------------------------");
  delay (200);
}

Rezultat:
In momentul in care apropii un magnet permanent de senzorul Hall, tensiunea citita scade, se aprinde ledul 2 si se atinge pragul de senzibilitate setat. Pe pinul D0 o sa se citeasca o tensiune de 5 v, care mai departe ar putea fi folosita pentru un intrerupător sau activarea unui alt dispozitiv.

O zi bună tuturor!