Inverter ad onda sinusoidale Open Source con scheda Infineon Arduino motor shield

Inverter Open Source

Utilizziamo in maniera originale la scheda Infineon Motor Shield, aggiungendo un Arduino e solo altri due componenti possiamo realizzare un inverter ad onda sinusoidale che trasforma la 12V della nostra auto, camper o barca nella 230V di casa per alimentare i nostri utilizzatori preferiti.

Preparazione della scheda Infineon motor Shield

La scheda Infineon Motor Shield arriva senza piedini saldati per cui, per prima cosa, ho provveduto a saldare le strip maschio destinate ad accoppiarsi con gli I/O di Arduino. Vista la grande corrente (30A) in entrata ed in uscita dai capi di potenza, la scheda non presenta per quest’ultimi le tipiche piccole piazzole per strip ma fori più grandi con ampie zone in rame da entrambi i lati, io ho optato per avvitarci sopra quattro boccole1 per terminali a banana in modo da rendere comodi i collegamenti provvisori necessari in fase di prototipazione.

Il montaggio di tali boccole, anche tenute il più alto possibile (fig. 1), purtroppo, mal si adatta alla scheda Arduino Uno, visto che i dadi sottostanti tendono comunque ad urtare la porta di alimentazione e la porta USB dell’Arduino.

Fig. 1 – boccole montate in modo da creare il minimo ingombro sotto lo shield.

Fig. 1 – boccole montate in modo da creare il minimo ingombro sotto lo shield.

Ho risolto usando strip maschio leggermente più lunghe e ponendo nastro isolante sia sul dorso della presa USB che sul dado che inevitabilmente va a contatto con essa (fig. 2), per la presa dell’alimentazione ci sono meno problemi perché esternamente presenta materiale isolante.

Fig. 2 – Nastratura (in grigio) per evitare contatti indesiderati.

Fig. 2 – Nastratura (in grigio) per evitare contatti indesiderati.

 

Schema elettrico: solo due componenti oltre alle schede Arduino Uno e Infineon motor shield

Fig. 3 - Schema elettrico solo due componenti oltre alle schede Arduino Uno e Infineon motor shield

 

Modalità di controllo dei 2 half bridge

La scheda presenta 2 integrati BTN8982TA che sono dei mezzi ponti (half bridge), per creare una tensione sinusoidale si può agire in due modi, il primo è comandare contemporaneamente i due half bridge con segnali sinusoidali sfasati di 180 gradi, il secondo è quello di far agire una sola metà del ponte alla volta tenendo costante la tensione in uscita dall’altra metà del ponte. (fig. 4)

Fig. 4 – potenziale dei due terminali OUT e loro differenza, per un valore efficace di 230V il valore massimo è superiore ai 300V.

Fig. 4 – potenziale dei due terminali OUT e loro differenza, per un valore efficace di 230V il valore massimo è superiore ai 300V.

La seconda soluzione è migliore perché tenendo fisso uno dei due valori si evitano metà delle perdite di commutazione, per cui nella programmazione del firmware ho cercato di implementare questa tipo di controllo.

Considerazioni sui valori di tensione e potenza

L’inverter assorbe una corrente continua in ingresso e ne produce una alternata in uscita, fin qui nulla di nuovo, ma che valore presenta la tensione alternata? Per saperlo occorre ripassare un po’ di teoria, il valore col quale si indica la tensione alternata, se non specificato altrimenti, è il valore efficace ovvero la radice quadrata della media dei quadrati, indicata in inglese con la scritta RMS (Root Mean Square), per un’onda sinusoidale (e solo per quella) il valore efficace si può ottenere facilmente prendendo il valore di picco di una semionda (detto valore massimo) e dividendolo per radice di 2.

Vediamo di chiarire con un esempio pratico se diamo in ingresso 12V DC ad un ponte ad H in uscita possiamo avere al massimo una sinusoide che va da +12V a -12V il cui valore massimo è 12V, di conseguenza il valore efficace risulta di di 12/1,41 = 8,51V.

Se vogliamo realizzare un inverter in grado di erogare i 230Vac della rete domestica dovremo applicare un trasformatore con adeguato rapporto di trasformazione che, al contrario di quanto si può pensare, non è 230/8,51, in quanto la maggior parte dei trasformatori è pensata per ridurre la tensione e non per alzarla e presenta un rapporto di trasformazione reale diverso da quello di targa per compensare le cadute di tensione.

Ad esempio il trasformatore che ho utilizzato nel prototipo presenta Sn=100VA e rapporto nominale 220/12 e per ottenere 230 V in uscita ho dovuto alimentarlo con 20V in corrente continua.

Da questi ragionamenti ne consegue che per realizzare un inverter che dalla tensione di batteria auto ci porti a 230V occorre un rapporto di trasformazione di targa di 230/7,2V che non è un valore standard. In conclusione consiglio di utilizzare un rapporto di trasformazione standard con valore secondario di poco inferiore a 7,2 e di regolare la tensione alternata in ingresso tramite firmware in modo da ottenere sperimentalmente la tensione di uscita desiderata.

Per quanto riguarda la potenza massima del nostro inverter abbiamo il limite di 30A per cui se alimentiamo a 12V la potenza massima in ingresso sarà di 12x30=360W, anche il trasformatore dovrà presentare una potenza nominale maggiore o uguale a 360VA ed in uscita avremo verosimilmente almeno 300W erogabili 24h al giorno oppure potenze maggiori per tempi brevi.

 

Programmazione

La realizzazione del firmware con l’IDE Arduino ha richiesto la soluzione di diversi problemi che non avevo preventivato, la difficoltà è dovuta ai 50Hz che, pur sembrando pochi, richiedono di creare una sinusoide in soli 20ms con istruzioni da eseguire in real time.

Non ho potuto utilizzare la funzione delay() in quanto accetta in ingresso solo valori interi di millisecondo e mi avrebbe consentito di approssimare la sinusoide con meno di 20 gradini (ritardo minimo 1 ms) per cui, dopo varie ricerche, ho trovato il listato della funzione delay() e modificandolo sono riuscito ad ottenere funzioni delay “personalizzate” con ritardo di 10 o 100us. Solo successivamente, in fase di revisione dell'articolo ho scoperto l'esistenza della funzione delayMicroseconds() che mi avrebbe evitato la fatica.

La forma d’onda in uscita comunque non era soddisfacente e ho scoperto che ciò era dovuto alla frequenza delle uscite PWM di Arduino che presentano di default un valore molto basso per lo scopo (488Hz). In rete ho trovato una funzione che permette di variare questo parametro ed ho portato la frequenza del PWM a 3904Hz.

Per creare la sinusoide al posto di calcolare la funzione seno con “sin()” eseguito n volte al ciclo ho optato per creare un vettore di 17 elementi con già inseriti i valori del seno di angoli da 0 a 90°. Ripercorrendo il vettore avanti e indietro una volta comandando una metà ponte una volta l’altra metà ho ricreato in uscita una sinusoide approssimata con ben 64 gradini.

Fig. 5 – Forma d'onda dell'uscita con collegato un carico resistivo da 40W.

Fig. 5 – Forma d'onda dell'uscita con collegato un carico resistivo da 40W.

Come visibile in fig. 5 la forma d'onda della tensione presenta molti picchi dovuti alla commutazione PWM per cui ho pensato di filtrarli applicando in uscita un condensatore poliestere con tensione di lavoro 400VAC e 0,47uF ed ecco i risultati:

Fig. 6 – Forma d'onda dell'uscita con condensatore da 0,47uF e carico resistivo da 40W, la forma d'onda risulta sensibilmente migliorata.

Fig. 6 – Forma d'onda dell'uscita con condensatore da 0,47uF e carico resistivo da 40W, la forma d'onda risulta sensibilmente migliorata.

Il prototipo funzionante (ancora senza condensatore)

Fig. 7 - Il prototipo funzionante (ancora senza condensatore)

Conclusioni

Con questo prototipo ho dimostrato che è possibile utilizzare la scheda Infineon, originariamente pensate per i motori in corrente continua, anche per realizzare un inverter. Prossimi passi possibili per sviluppare ulteriormente il progetto sono quelli di poter variare tensione e frequenza allo scopo di controllare motori asincroni.

1 I terminali di potenza sono cinque, ma per questo progetto non mi serviva la massa in uscita e quindi non ho installato la relativa boccola.

12 Commenti

  1. Ale Torri AT Lab 16 ottobre 2015
  2. dfacchin 16 ottobre 2015
  3. Adriano Gandolfo adrirobot 17 ottobre 2015
    • vetrucci vetrucci 5 novembre 2015
  4. Antonio Palmiero 30 ottobre 2015
  5. lucio.quadri@teletu.it 2 novembre 2015
    • vetrucci vetrucci 5 novembre 2015
  6. IlGuru 4 novembre 2015
    • vetrucci vetrucci 5 novembre 2015

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend