Se sei già registrato           oppure    

Orario: 29/03/2024 06:41:53  

 

Energia Alternativa ed Energia Fai Da Te > Sistemi operativi, hardware e programmazione.

VISUALIZZA L'ALBUM

Pagine: (2)   1   [2]    (Ultimo Msg)


STM32F103C8T6, Qualcuno lo conosce?
FinePagina

joeled
KiloWatt


Gruppo:Utente
Messaggi:203

Stato:



Inviato il: 08/04/2020 15:08:31

@emuland
Allora , leggo i dati i2c da altro arduino ,e li passo al dac sempre con i2c e tutto funziona...
Ma se anzichè ricevere da i2c ricevo da seriale addio a tutto, la seriale vuole troppo tempo e i 20 ms dell'onda generata vanno a farsi benedire...

void loop () {
  Wire.requestFrom(9, 2);
  a = Wire.read();
  b = Wire.read();
  val = a;
  val = val << 8 | b;
  val = (map(val,0,4500,0,1165));
  while  (digitalRead(8) == 1) {
    genera(val);
  }
}
void genera (int val) {
  dac.print(2220 + val);// 2200 genera offset dc di 1.7 volt
  delayMicroseconds(9900);//
  dac.print(2220 - val);
  delayMicroseconds(9900);//2200 genera offset dc di 1.7 volt
}



---------------
595Wp 1 mono + 4 poli direzione 1 ovest - PCM 60 X MPPT - 2x SMA 12volt 105 Ah - inverter china 1000 Watt onda pura-Sistema 24 volt
Sito realtime in versione beta...

 

emuland

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4367

Stato:



Inviato il: 08/04/2020 15:52:51

CITAZIONE (joeled, 08/04/2020 15:08:31 ) Discussione.php?216079&2#MSG15

@emuland
Allora , leggo i dati i2c da altro arduino ,e li passo al dac sempre con i2c e tutto funziona...
Ma se anzichè ricevere da i2c ricevo da seriale addio a tutto, la seriale vuole troppo tempo e i 20 ms dell'onda generata vanno a farsi benedire...
void loop () {
  Wire.requestFrom(9, 2);
  a = Wire.read();
  b = Wire.read();
  val = a;
  val = val << 8 | b;
  val = (map(val,0,4500,0,1165));
  while  (digitalRead(8) == 1) {
    genera(val);
  }
}
void genera (int val) {
  dac.print(2220 + val);// 2200 genera offset dc di 1.7 volt
  delayMicroseconds(9900);//
  dac.print(2220 - val);
  delayMicroseconds(9900);//2200 genera offset dc di 1.7 volt
}


ma perchè usi delay e non millis() ?

dovresti fare una prova con la seriale di un esp da 115200, secondo me bypassi il problema



---------------
Il posto dove ti propongono confronto, ma solo se gli dai ragionr...
e, dove la verità è la fuori, ma anche no.
Dove si riscrive la storia a piacimento e quando porti argomentazioni, eh ma...
Ah beh se lo dice Bolle... ma Bolle non esiste...
Il complo

 

PierGsi
Watt


Gruppo:Utente
Messaggi:43

Stato:



Inviato il: 08/04/2020 16:07:12

Arduino NANO vedo che utilizza ATMEGA328...

P.S. non ho riscontri del funzionamento di quanto segue e potrei aver sbagliato qualche registro, è una mia idea di come lo farei in C...

Metti un quarzo da 20 MHz

* Setti INT0 per rilevare lo zero crossing rete sul secondario di un trasfo di isolamento, la routine sarà chiamata 100 volte al secondo (ad ogni passaggio sia negativo/positivo che positivo/negativo della semionda di rete).
* Metti il TIMER/COUNTER1 in Phase correct mode ed imposti i registri in modo da avere un valore TOP max di conteggio pari a 2048 (che sarà la risoluzione del tuo PWM) ,prescaler ad 1.

fOUT= FRQ.OSCILLATORE/2*1*TOP
fOUT= (20*10^6)/(2*1*2048)= 4.88 kHz

4.88 kHz sarà la frequenza "di carrier" fornita dal pin PWM per generare la onda quadra modulata in ampiezza.

5V/2048 = 2.4 mV di risoluzione


L'uscita del pin PWM la colleghi ad un filtro integratore RC per avere un compromesso tra tempo di risposta e ripple, diciamo 2k2 / 100 nF oppure 10k / 100nF, da valutare considerando la costante di tempo R*C per arrivare circa al 60/70% della carica che ci si aspetta.

Metti a riposo il PWM a 1023 (registro OCR1x mi pare), per 2.5V in uscita

* USART configurata al baud rate richiesto, INTERRUPT A FINE RICEZIONE.

Ora, ad ogni passaggio per lo zero (INT0 routine) devi solo fare, alternativamente, 1023+(mVdesiderati/2.4), 1023-(mVdesiderati/2.4) e mettere il valore ottentuo nel registro hardware del TMR1 (OCR1x).
Dovresti ottenere un'onda quadra simmetrica duty 50-50 con frequenza 50Hz, sincrona con la rete, e che oscilla attorno a metà tensione di alimentazione.


Quando lo desideri chiedi al contatore remoto il dato di consumo tramite tramite seriale da una routine nel main, considera che bufferizzare un byte da trasmettere è roba da pochissimi cicli macchina, una volta caricato il dato si arrangia l'hardware del micro a fare tutto, poi quando il contatore/misuratore risponde il micro ti entra nella service interrupt dell'USART, li' prendi il dato, lo metti in un array che *processerai sempre nel main*.

Una volta che dalla seriale hai ricevuto il numero di bytes che ti aspetti, fai il parsing ed i calcoli nel MAIN.
Avendo il valore desiderato da mettere nel registro del contatore TMR1 aspetti la prox. chiamata della routine INT0, lo copi dentro OCR1x e lui si arrangia a crearti il duty cycle.

 

joeled
KiloWatt


Gruppo:Utente
Messaggi:203

Stato:



Inviato il: 08/04/2020 19:40:36

@emuland
Proverò con millis

@Piergsi
Interessante , mi documenterò..grazie



---------------
595Wp 1 mono + 4 poli direzione 1 ovest - PCM 60 X MPPT - 2x SMA 12volt 105 Ah - inverter china 1000 Watt onda pura-Sistema 24 volt
Sito realtime in versione beta...

 

PierGsi
Watt


Gruppo:Utente
Messaggi:43

Stato:



Inviato il: 10/04/2020 11:55:55

Fatto progressi ?

 

Claudio

Avatar
PetaWatt


Gruppo:MODERATORE
Messaggi:15070

Stato:



Inviato il: 10/04/2020 14:11:25

Non vorrei dire banalità ma se si beve amplificare un segnale a 50Hz non è più semplice usare un piccolo circuito amplificatore tarandolo in modo di avere all'uscita la tensione Ac desiderata sincronizzata con la rete?

Quanti miliVolt hai a 30 metri e quanti ne dovresti avere?



Modificato da Claudio - 10/04/2020, 14:14:48


---------------
Inverter Sofar Solar HYD6000-EP, 5250W pannelli, 14kWh lifepo4.

 

joeled
KiloWatt


Gruppo:Utente
Messaggi:203

Stato:



Inviato il: 10/04/2020 19:49:14

CITAZIONE (Claudio, 10/04/2020 14:11:25 ) Discussione.php?216079&2#MSG20

Non vorrei dire banalità ma se si beve amplificare un segnale a 50Hz non è più semplice usare un piccolo circuito amplificatore tarandolo in modo di avere all'uscita la tensione Ac desiderata sincronizzata con la rete?

Quanti miliVolt hai a 30 metri e quanti ne dovresti avere?

Ciao , non è una banalità ,potrebbe funzionare amplificando il segnale del TA a livelli trasportabili..magari 5 volt e poi ridurlo all'arrivo per riportarlo all'origine.Quello che mi preoccupa con questo sistema sono i possibile disturbi a 50 hz che potrebbero entrare lungo il tragitto...Considerando che la risoluzione del gtil e' circa 1.2 millivolt per 12 watt...



---------------
595Wp 1 mono + 4 poli direzione 1 ovest - PCM 60 X MPPT - 2x SMA 12volt 105 Ah - inverter china 1000 Watt onda pura-Sistema 24 volt
Sito realtime in versione beta...

 

joeled
KiloWatt


Gruppo:Utente
Messaggi:203

Stato:



Inviato il: 10/04/2020 19:51:54

CITAZIONE (PierGsi, 10/04/2020 11:55:55 ) Discussione.php?216079&2#MSG19

Fatto progressi ?

Yes..
Ho trovato cosa era l'inghippo ...
Per non scrivere 6 7 righe di codice in più ho messo questo:
Serial.parseInt()

Leggendo direttamente i byte dalla seriale problema risolto..
Avrei scritto stasera la risposta...



Modificato da joeled - 10/04/2020, 19:57:28


---------------
595Wp 1 mono + 4 poli direzione 1 ovest - PCM 60 X MPPT - 2x SMA 12volt 105 Ah - inverter china 1000 Watt onda pura-Sistema 24 volt
Sito realtime in versione beta...

 

PierGsi
Watt


Gruppo:Utente
Messaggi:43

Stato:



Inviato il: 11/04/2020 10:38:50

 

joeled
KiloWatt


Gruppo:Utente
Messaggi:203

Stato:



Inviato il: 13/04/2020 19:49:17

Buonasera...
si prosegue qui..
LINK



---------------
595Wp 1 mono + 4 poli direzione 1 ovest - PCM 60 X MPPT - 2x SMA 12volt 105 Ah - inverter china 1000 Watt onda pura-Sistema 24 volt
Sito realtime in versione beta...

 
 InizioPagina
 

Pagine: (2)   1   [2]    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum