Vai al contenuto
PLC Forum


generatore onda quadra arduino (.)


kym

Messaggi consigliati

Ho trovato questo link:  http://www.oxgadgets.com/2011/04/creating-a-variable-frequency-pwm-output-on-arduino-uno.html

 

ho provato ad utilizzare l'ultima versione postata nell'ultimo messaggio ma da un errore che non capisco, anche prchè di arduino ne so veramente poco niente.

 

Chi mi aiuta? anche con altro progetto non mi serve in special modo questo mi serve qualcosa che generi un onda quadra con DT variabile da 0 a 100%  con frequenza da 1hz a qualche khz (5-6-10 non importa) ma che sia possibile lineare o a salti di 100-200 hz

 

Altrimenti mi tocca comprarmi un generatore di funzioni e per provare la luminosità/dimmer di qualche led mi pare buttar via dei soldi.

 

Dispongo di arduino 1, atmega328, Attiny24/85, arduino mini ed è indifferente usare uno o l'altro.

 

Grazie.

Link al commento
Condividi su altri siti


  • Risposte 55
  • Created
  • Ultima risposta

Top Posters In This Topic

  • kym

    19

  • Livio Orsini

    13

  • dott.cicala

    12

  • sx3me

    4

  1. Quel programma non realizza i tuoi deisderata, errore di compilazione a parte. Quel programma serve per generare segnali PWM, ovvero a larghezza variabile e frequenza fissa.
  2. Realizzare quello che desideri con un micro è piuttosto complicato.
  3. esisto degli integrati come LM331 che fanno egregiamente questo lavoro con pochi componenti esterni.
Link al commento
Condividi su altri siti

Si può fare benissimo anche con Arduino, via software.

La frequenza dell'onda quadra è null'altro che la somma del tempo ON e di quello OFF.

Arduino consente di determinare il tempo ON e OFF, di ogni onda quadra, con le sospensioni in ON e OFF tramite le funzioni millis(), micros() e delay().

So che il sistema funziona, perchè l'ho sperimentato ultimamente nel software Ulisse che carica le batterie con doppie serie di impulsi (onde) che si sovrappongono, cioè la serie alle frequenze standard (488 e 966 hertz) e un altra costruita ad hoc, più lunga, ma nulla vieta di farla più corta.

E' pure semplicissimo.

Link al commento
Condividi su altri siti

Si potrebbe fare anche con un 555,  un LM1391 un 4046 ecc ecc, ma volendo usare un micro, userei l' Attiny, gli altri mi sembrano sprecati.

 

Il pwm c'è, due ingressi analogici pure, c'è anche il clock interno e tutto quello che serve.

 

Premetto che gli Atmel non li uso più da parecchio, perché costano più dei pic e la documentazione fa pena...gli esempi in rete spesso non funzionano.

 

Non dovrebbe essere troppo complicato, se può essere d'aiuto, descrivo brevemente come ho realizzato la stessa funzione con un 12F1572 che è molto simile all'85...ma costa la metà.

 

Per variare il duty cycle, agisco sul pwm tramite una variabile ottenuta dall'ingresso analogico al quale è collegato un potenziometro.

Per variare la frequenza, agisco sul prescaler del pwm sempre tramite una variabile ottenuta da un altro ingresso analogico al quale è collegato......un potenziometro.

Siccome il pwm è una funzione già a disposizione in hardware ed è alimentato dal clock tramite prescaler,  non c'è molto codice da scrivere, se non il settaggio di alcuni registri e una scelta oculata del clock in base al range di frequenze che si desidera ottenere.

Quello che ho ottenuto è un d che va da 0 al 100% con frequenza da 1KHz a 100kHz

 

 

 

Link al commento
Condividi su altri siti

Quote

con frequenza da 1hz a qualche khz (5-6-10 non importa) ma che sia possibile lineare o a salti di 100-200 hz

 

Con arduino et similia, la variazione di frequenza avviene per multipli perchè si deve agire esclusivamente sul fattore di divisione del prescaler.

Inoltre non si scende sotto qualche centinaio di Hz come frequenza portante.

 

Usando un 555 si può ottenere abbastanza facilmente sia la variazione 1-99% del PWM, sia una buona variazione lineare di frequenza. Agendo sul cambio di capacità tramite commutatore è possibile anche avere alcune gamme di frequenza.

Il problema vero sono le basse frequenze.

Per partire da frequenze così basse bisogna fare un circuito molto sofisticato.
 

Quote


per provare la luminosità/dimmer di qualche led

 

 

Per questo è sufficiente proprio un arduino come generatore di PWM, non hai bisogno di cambiare frequenza basta la frequenza standard di 488 Hz, un potenziometro collegato ad un ingresso analogico dello stesso arduino fa variare il PWM con continuità. Negli sketch di esempio di arduino è già presente tutto il software e le spiegazioni.

In rete poi trovi 13 esempi per dozzina, su questa applicazione.

Link al commento
Condividi su altri siti

Ovvio che un utente di Arduino (che non sa una mazza di elettronica) preferisca utilizzare un UNO da 3 €uro e agire sul software, piuttosto che costruire un circuito elettronico ad hoc.

Cosa occorre fare per avere dei cicli ON e OFF (esempio 50 ON e 50 OFF) di una certa frequenza, cioè distanza l'uno dall'altro ?

Occorre agire sui "tempi" con la funzione analogWrite (), piena o vuota e con degli stop.

.......

int frequenza = 1;   // millesimi di secondo:

while (frequenza < 300)   // da 1 a 300 millesimi di secondo:

{

  frequenza = frequenza + 1;

  for (int cicli = 0; cicli < 200; cicli ++)   // per ogni frequenza impostata fa 200 cicli:

   {

    analogWrite (caricoPin, 0);   // OFF:
    delay (frequenza);    //stop, cioè durata ciclo OFF:
    analogWrite (caricoPin, 255);  //  ON:

    delay (frequenza);    // stop, cioè durata ciclo ON:

  }

}

..........

Ho buttato giù di getto queste righe di software, mentre guardo la F1. Non l'ho provato. Il dott.cicala può dirmi cosa succede. Cioè quali frequenze acustiche escono, in sequenza e quali correttivi occorrono.

 

 

Link al commento
Condividi su altri siti

E dai con questi 3€ per arduino. Evviva l'ottimismo:)

 

Ti consiglio di provarla questa sequenza, ma soprattutto di verificare con lo strumento adatto, ovvero con un oscilloscopio quello che succede nella realtà

 

Poi i ritardi bloccanti (delay) sono un vero e proprio obbrobrio da usarso solo in condizioni particolari come , ad esempio, quando si qaulche µs di ritardo o di attesa ad un comando; vedi, sempre come esempio, la scrittura di un display o la lettura di misuratore di distanza ad ultrasuoni.

 

Li usano negli sketches di esempio, che sono sketches di poche righe, per previlegiare l'immediatezza della comprensione da parte dell'utente che non sa programmare.

 

Ho approvato il messaggio solo per farti riflettere sul fatto che non è bello buttar le cose a caso.:angry:

 

Comunque per fare quello che interessa kym non c'è bisogno di inventarsi alcunchè di strampalato, basta usare l'esempio di uso di PWM presente nell'IDE.

Link al commento
Condividi su altri siti

Eccomi, ringrazio tutti per l'interesse dimostrato!

 

Allora vado per gradi e cerco di rispondere a tutti:

 

Livio, io pensavo di trovare una cosa piuttosto semplice che mi permetta al limite con il cambio di qualche variabile (prescaler) di giungere ad un risultato decentemente pratico perchè nel mio caso voglio poter cambiare anche la frequenza, non mi basta il DC voglio proprio poter cambiare frequenza e DC contemporanamente ed in modo più o meno pratico, perchè come tu mi hai insegnato più volte, i led sembrano delle stupide lucine banali ma sono tutt'altro che banali se si vogliono far lavorare bene ed in tutte le condizioni, esempio nel mio caso devo per forza studiarne il calore, per questo voglio poter agire sulla frequenza perchè dalle prove che ho fatto (anche nel forno grill per simulare il calore del sole di una intensa giornata di sole dentro il faro di un auto) la temperatura è tutto, e con 50 gradi di temperatura sul led da spento, come lo accendi dandogli i canonici 20mA che davi di sera lo fanno bruciare in mezzora per raggiungimento della temperatura critica cosa che con 10mA no ma la luce è poca.....  Da questo devo trovare il sistema di provare proprio a banco di avere una buona luminosità cercando di mantenere un equilibrio tra frequenza e DC che diano lo stesso risultato in luminosità (o anche meglio) ma tenendo il led più basso in temperatura.  Una prova l'ho già fatta frequenza fissa e sono giunto ad avere 9 gradi in meno, e non sono pochi, però sono partito dalla temperatura di casa non era ancora iniziato il gran caldo. Tra una prova e l'altra capisci che cambiare condensatori ricalcolare tutto con i 555 è una menata assurda e poi comunque non si riesce mai ad avere una linearità, per questo pensavo al micro e vedendo quell'articolo non mi è sembrato vero.  Ho provato con i 555 ed un dip-switch ma mi sono incasinato che l'ho fatto così grande e con tante variabili che andava in risonanza qualcosa e non funzionava più niente faceva solo un sibilo. Usare la frequenza fissa di arduino si l'ho provato ho visto tanti esempi ne ho provati diversi ma non giungevano a quel che voglio fare, voglio proprio studiare nella pratica simulando le possibili condizioni di lavoro con frequenza e DC variabile. Questo anche perchè ho alcuni led che nei datasheet ti danno un range di frequenza ottimale con un DC del 10%  in cui puoi spingerti a 3 volte in più sulla corrente a tutto guadagno della luminosità.  A proposito: un app, foglio di calcolo o qualcosa che mi dica che 1/10 di 1kHz corrispondono ad un RMS di ?? mA  è un calcolo che esiste?

 

Luigi, il circuito ad-hoc come dici tu lo so fare pure io, e con una discreta manualità sui PCB, ma se leggi meglio quello che chiedo dovresti capire che io non so la frequenza che userò ne il DC che userò, devo fare delle prove, ed ho bisogno di qualcosa di pratico dove posso cambiare frequenza-DC senza diventare pazzo, ed una volta che so la frequenza ed il DC che andrò ad usare per quella specifica applicazione non ho problemi a farmi un oscillatore fatto bene con integrati già fatti/555/micro o quel che sia. lo so che con arduino si può fare con i delay/mils e via dicendo..... ma non è ne pratico ne preciso ne mi da infine la possibilità di cambiare frequenza, non devo far fare due lampeggi in loop ma fare delle prove di temperatura su dei led e se lo faccio voglio che sia preciso.

 

Dott. Cicala, accidenti, son subito corso a vedere se il mio programmatore "picstart plus" faceva il pic che usi tu, purtroppo no, ci vuole il pickit3 che non ho.... però non è detto che possa procurarmelo, dammi conferma: riesci a variare con due potenziometri completamente indipendenti frequenza e DC 0-100% però solo tra 1khz e 100khz.... più in basso non c'è possibilità? io vorrei proprio partire da pochi Hz  ora non dico proprio 1 ma almeno 100Hz - 6kHz .... sarebbe perfetto.

 

Mi raccomando, non litigate per me, non ne vale la pena :roflmao:

Link al commento
Condividi su altri siti

puoi usare la tecnica DDS , con un timer presettato in modo da ottenere la frequenza piu alta e sensata per il micro in questione

Poi all'interno del suo interrupt crei dei moltiplicatori 

Stavo tentando di fare qualcosa del genere per pilotare i motori passo-passo.

Be che Luigi dica sempre le stesse cose ormai e' risaputo ,.....Arduino , 3 euro , grandi prestazioni , pannelli fotovoltaici ....accettiamolo cosi com'e' 

Link al commento
Condividi su altri siti

Ovviamente non ce l'ha.

Credo che sia più facile capire ed imparare ad usare il pwm di un attiny o di un pic con annessi e connessi, che imparare a gestire un AD9850...

 

 

Link al commento
Condividi su altri siti

Bho, dalla traduzione cinese italiano non si capisce....Magari cerca un arbitrary vaweform generator, ci sono dei cinesi simili a quello del link che costano poco.

Io l'ho fatto con la red pitaya, ma forse si spende meno a comprare......un cinese.

Link al commento
Condividi su altri siti

Almeno sei sicuro che dentro non c'è....un mattone :superlol:

Quote

senza regole, elettrocardiogramma, trapezoidale rumore impulsivo, il polso medico, impulso stretto e rumore bianco gaussiano, forma d'onda

magari...senza regole sta per arbitrario.....costa proprio poco.

Il polso medico invece cosa sarà?

Link al commento
Condividi su altri siti

Tra il mattone e la foto, avrei preferito il mattone almeno ho qualcosa da tirare!

Traducono proprio a pene di segugio.....

 

Pulsazioni???? pressione ?? diabete?

 

Ho trovato anche un atten (200 euro però) atf20B   ......... carino carino .....  ma uno spreco per quel che serve a me.

 

Ma voi lo barattereste un   Tek  THS-710A (portatile)  con un  Atten  ADS1102CML    ho la sensazione che è meglio il Tek.... o no?

 

Insomma alla fine mi sa che mi accatterò un generatore di funzioni cinese....

Pensavo all'uscita con un darlington così son sicuro che satura completamente o un regolatore lineare tipo gli sharp con porta per l'onda quadra, non penso ciuccino più di 20mA che da lo strumento.

Link al commento
Condividi su altri siti

Prendilo , così ci saprai dire come va ; per quei soldi , anche se per me non pochi , sembra regalato .

 

 Io partecipo alle spese di spedizione (quelle dell annuncio ):superlol::thumb_yello:

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.

×
×
  • Crea nuovo/a...