BellaEli
| Inviato il: 27/03/2015 08:17:25
|
CITAZIONE
Ma quindi OCR1A dovrà eseguire l'indice da > 0 a 250 e invece OCR1B dovrà < da 250 a 0?E giusto?
Io pensavo che OCR1A va da >0 a 250 , poi l'indice di nuovo a 0, OCR1B da >0 a 250.
Come ti avevo anticipato nel post precedente, io preferisco far funzionare sia il pin 9 che il 10 in logica normale, non negata.
Se guardi bene, su OCR1B c'è la formula [Indice - 250]:
Succede che da 0 a 249 i valori dell'Array finiranno dentro OCR1A, da 250 a 499 i valori dell'Array finiranno dentro OCR1B (poiché c'è quel "- 250" i valori saranno sempre da 0 a 250), a 500 la variabile Indice viene resettata a 0 per riniziare il ciclo da OCR1A.
Nell'ultimo IF avrei potuto mettere: IF (Indice = 500) {...
Tuttavia ho preferito utilizzare "> 499" in modo che se per qualunque evento imprevisto la variabile dovesse saltare direttamente ad un valore > di 500 viene comunque resettata.
Sono riuscito a trasmettere il concetto ?
Modificato da BellaEli - 27/03/2015, 08:25:47
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| |
| | inverter90
| Inviato il: 27/03/2015 11:21:11
|
Ok BellaEli come sempre voi date sempre delle ottime spiegazioni sono io un po tonto a capire
Ok, ma se volessimo tagliare la testa al toro giusto per capire e ad esempio per OCR1B volessimo usare la negativa la formula sarà sempre (indice-250)?
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | BellaEli
| Inviato il: 27/03/2015 11:41:01
|
CITAZIONE
Ok, ma se volessimo tagliare la testa al toro giusto per capire e ad esempio per OCR1B volessimo usare la negativa la formula sarà sempre (indice-250)?
No !
Sarebbe qualcosa del genere:
-TOP CODE-
-BOTTOM CODE-
Ma ti è chiaro il funzionamento ?
a 0 µS il PWM del pin 9 e 10 è a 0 // Istante iniziale in cui parte il micro
a 40 µS il PWM del pin 9 viene settato a 5 // Il PWM inizia a crescere
a 80 µS il PWM del pin 9 viene settato a 10
a 120 µS il PWM del pin 9 viene settato a 15
...
a 5.000 µS il PWM del pin 9 viene settato a 400 // Il PWM raggiunge il picco superiore
...
a 5.160 µS il PWM del pin 9 viene settato a 399 // Il PWM inizia a calare
...
a 10.000 µS il PWM del pin 9 viene settato a 0 // Il PWM del Pin 9 torna a 0
a 10.040 µS il PWM del pin 10 viene settato a 5 // Inizia a crescere il PWM del Pin 10
a 10.080 µS il PWM del pin 10 viene settato a 10
a 10.120 µS il PWM del pin 10 viene settato a 15
...
quindi a ogni chiamata dell'ISR viene modificato il valore del PWM di un solo PIN !
E ogni cambiamento verrà effettuato ogni 40 µS !
Fammi capire se ti è chiaro come funziona...
Modificato da BellaEli - 27/03/2015, 11:44:29
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | inverter90
| Inviato il: 27/03/2015 12:19:48
|
Ok ok il funzionamento generico c'e l'ho a mente, ricapitolando timer2 conteggia 80 impulsi (cioè 40us) e fa scattare l'interrupt (ISR) e nei primi 10ms cioè meta semionda(OCR1A) l'indice si incrementa da 0 a 250 campioni, poi altri 10ms per completare l'altra semionda (OCR1B) indice da 251 a 500..passati 20ms periodo dell'intera onda l'indice l'indice si resetta a 0 e ricomincia il ciclo..
la cosa che non mi è tanto chiara è tu preferisci usare il modo non-inverita questo vuol dire che avremo 2 onde positive?
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | BellaEli
| Inviato il: 27/03/2015 12:25:53
|
Rev. 07: Miglioramenti Titoli e Descrizioni
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | BellaEli
| Inviato il: 27/03/2015 12:51:04
|
CITAZIONE
la cosa che non mi è tanto chiara è tu preferisci usare il modo non-inverita questo vuol dire che avremo 2 onde positive?
Esatto, sarà il ponte ad H ad invertire il verso della corrente all'interno dell'avvolgimento del trasformatore:
Poichè il Pin 9 piloterà i finali TR1 e TR4 (Corrente nel DC Motor da Sinistra verso Destra) il Pin 10 piloterà i finali TR2 e TR3 (Corrente nel DC Motor da Destra verso Sinistra)
Giusto ?
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | inverter90
| Inviato il: 27/03/2015 13:10:32
|
una cosa del genere quindi
Immagine Allegata: Ponte H.jpg
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | inverter90
| Inviato il: 27/03/2015 13:12:19
|
e cosi
Immagine Allegata: Ponte H1.jpg
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | BellaEli
| Inviato il: 27/03/2015 13:21:09
|
Perfetto... ora ci siamo !!!
Hai disegnato persino la corrente nei diodi, vuol dire che le precedenti spiegazioni ti sono chiare...
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | BellaEli
| Inviato il: 27/03/2015 13:28:22
|
Elettro, Scinty, Kekko ma stiamo procedendo nella direzione giusta ?
Ricordo che io un inverter non l'ho mai realizzato, tutte le mie idee sono semplici deduzioni logiche sulla base delle mie conoscenze pregresse...
Se le mie idee sono sbagliate correggetemi !
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | inverter90
| Inviato il: 27/03/2015 13:32:44
|
Ok BellaEli speriamo bene, in attesa di qualche conferma da chi gia a realizzato il sistema, vediamo se riusciamo a generera almeno le 2 semionde.
A presto
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | inverter90
| Inviato il: 27/03/2015 13:40:46
|
Dato che ci siamo ti chiedo un'altra roba, regolazioni feedback pid abbiamo detto che andrà eseguita tutta tra l'ISR?In void loop non mettiamo niente
--------------- Il niente è impossibile finchè non ci provi!!!
| | | | BellaEli
| Inviato il: 27/03/2015 13:49:39
|
Nel loop sicuro ci andrà del codice, non possiamo mettere il PID nella ISR, rallenterebbe troppo l'esecuzione della ISR stessa...
Ma lo affronteremo in un secondo momento...
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | BellaEli
| Inviato il: 27/03/2015 20:57:33
|
Allora, vediamo di migliorare le cose...
Ho provato a fare qualche verifica e ho modificato il codice in questo modo:
-TOP CODE-
-BOTTOM CODE-
Il 1° IF gestisce i passaggi per lo "0" delle semionde, mettendo a 0 i piedini 9 e 10.
Il 2° IF trasla di DeadTime µS l'impulso del primo PWM di ogni semionda (Vedi immagine)
Il 3° IF incrementa da 5 a 400 e decrementa da 400 a 5 il PIN 9.
Il 4° IF incrementa da 5 a 400 e decrementa da 400 a 5 il PIN 10.
Il 5° IF resetta la variabile Indice per ricominciare il ciclo.
In realtà l'ultimo PWM avrà un T-on piccolo e un T-off Grande (diciamo 5 µS On e 35 µS Off), poi c'è un campionamento con tutti i PWM Off, poi parte il PWM dell'altra semionda con un DeadTime selezionabile.
Quindi, campionando a 40 µS potremo considerare i seguenti tempi tra lo spegnimento di 2 finali e l'accensione degli altri 2:
35 + 40 + DeadTime (0..20) = 75..95 µS
A me sembrano tantissimi, in realtà se le cose stanno così non serve affatto gestire il DeadTime, qualcuno mi dice dove sto sbagliando ?
Elettro ? Scinty ? Kekko ? Dove siete ???
Modificato da BellaEli - 28/03/2015, 00:29:27
--------------- C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!
| | | | inverter90
| Inviato il: 28/03/2015 06:43:31
|
Aitutateci pleaseeeee
--------------- Il niente è impossibile finchè non ci provi!!!
| |
| | |
|
Versione Completa!
|
|
|
|
|
|
|
|
|
|
|
|
|
|