Go Down

Topic: [OT] richiesta di aiuto per programmino x Accordatore (Read 80069 times) previous topic - next topic

menniti

se vengono inseriti tutti e sei significa che i valori usati sono insufficienti , prova a raddoppiarli o anche a triplicarli
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

Campa1957

Il problema è che sia con i due segnali uguali, riflessa = diretta che con la riflessa =0, all'avvio inserisce di botto le 6 uscite.
Non è che il modulino lavora al contrario? il relè collegato sul pin13 è eccitato anche se il leddino sulla schedina dopo i lampeggi iniziali è spento.  
Se non ricordo male ci dovrebbe essere un ritardo dopo l'inserimento di ogni scalino?!?
Allego foto del montaggio finale.
Tutti gli altri relè rimangono diseccitati.

Andrea

leo72

Il codice ci va giù pesante, in fatto di velocità. Prova mettendeo dei delay e facendo debug sulla seriale per vedere se p buggato lui  ;)
Come scrissi quando lo pubblicai, quel codice non l'ho potuto provare perché buttato giù senza avere un Arduino per cui potrebbe anche essere lui il problema  :smiley-sweat:

Campa1957


leo72

Basta mettere un delay fra un cambio di uscita ed il successivo.


menniti

Però non t'imbranare, altrimenti non finiremo mai! :smiley-sweat: Un delay è un delay, non puoi dire di non conoscere il comando delay() e ciò che fa e qual è la sua sintassi, altrimenti vai sul reference e leggitelo almeno. Poi localizza nel firmware il punto in cui, fatta la lettura/calcolo del ROS, e visto che non è congruo, il programma fa scattare il relé successivo, subito dopo lo scatto aggiungi un delay, anche di 1000 (1 secondo, tanto siamo a livello di prove), e vedi se la situazione migliora....
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

Campa1957

#97
Jun 29, 2013, 05:32 pm Last Edit: Jun 29, 2013, 08:04 pm by Campa1957 Reason: 1
Il comando delay () penso di aver capito come funziona ????, la sintassi è molto chiara e Leo lo usa anche nelle prime righe de SW.
Ho provato ad inserirlo in vari punti del SW ma senza alcun risutato, e lo avevo usato nel mio paciugo iniziale.

Dopo aver caricato il SW, con i due segnali (diretta e inversa) collegati ai Pin A0 e A1 la situazione è la seguente:

1) i relè collegati ai pin PD0....PD7 sono spenti i led sulle schede relè spenti
2) i relè collegati ai pin PB0....PB5 sono eccitati i led sulle schede relè accesi

Le schedine relè che ho utilizzato eccitano il relè quando l'ingresso relativo è basso.

non succede nulla al variare delle tensioni sui due ingressi PC0 e PC1, mi viene il dubbio che proprio non li legga???  :smiley-red:

Andrea

menniti

Beh, a questo punto l'unica è che Leo possa ricontrollare il firmware, con un po' di calma ed attenzione, per vedere se ci sono bug, lui non lo escludeva affatto. Però oggi è al raduno a Bassano. Pazientiamo fino al suo ritorno e vediamo cosa succede; il tuo progetto è molto complesso e senza disporre dell'hardware è difficile riuscire a scrivere un firmware perfetto :smiley-roll-sweat:
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

Campa1957

#99
Jun 30, 2013, 01:15 pm Last Edit: Jun 30, 2013, 06:09 pm by Campa1957 Reason: 1
Resto in attesa di vostri consigli............. magari anche su dove infilare delay ()   :smiley-red:

ho fatto una verifica, per prova ho caricato il programmio del lampeggiatore per verificare quando il relè si attrae (pin13), quando il led sulla scheda di Arduino è acceso il led sulla basetta è spento e di conseguenza il relè non è attratto!
Sperando possa essere informazione utile.

Andrea

leo72

Scusate ma oggi sono stato fuori casa quasi tutto il giorno.
Prova ad inserire alla riga 59, prima del while (!exit) un delay(1000):

Code: [Select]

         delay(1000);
    } while (!exit);

Campa1957

#101
Jul 02, 2013, 06:32 pm Last Edit: Jul 02, 2013, 06:47 pm by Campa1957 Reason: 1
GRANDE Leo72!!!

Mi spiego,

dopo aver inserito il delay dove indicato, non mi sembrava che fosse cambiato nulla ............

Ho provato a dare lo stesso segnale sui due ingressi A0 e A1, come per magia, il tutto si è messo a lampeggiare scandendo tutte le combinazioni delle 6 uscite!  :)  :)  :)
Non ho ancora collegato nulla, aspettavo di vedere qualcosa muoversi, sui contatti dei relè ma al più presto ci collegherò le resistenze per la simulazione della variazione del segnale delle rifessa.

Al più presto aggiornamenti!!!

Ho inserito un post su Arifidenza con il link a questa discussione http://www.arifidenza.it/forum/topic.asp?TOPIC_ID=220457 speriamo arrivino nuove idee!

Andrea



Maurotec


Scusate ma oggi sono stato fuori casa quasi tutto il giorno.
Prova ad inserire alla riga 59, prima del while (!exit) un delay(1000):

Code: [Select]

         delay(1000);
    } while (!exit);



Occhio che "exit" è una funzione void in stdlib.h, per evitare ambiguità sarebbe meglio non usarla proprio. Se proprio la si vuole usare si scrive l_exit da local_exit, o dummy_exit, o altro. A me è capitato di incartarmi di brutto, il codice non compilava e non capivo il perché, scoperto il motivo ho ritenuto utile considerare "exit" una parola chiave del C, anche se non lo è.


Sicuramente il codice commutava troppo velocemente i relè che neanche si mettevano in movimento.
Ciao.

leo72


Occhio che "exit" è una funzione void in stdlib.h, per evitare ambiguità sarebbe meglio non usarla proprio. Se proprio la si vuole usare si scrive l_exit da local_exit, o dummy_exit, o altro. A me è capitato di incartarmi di brutto, il codice non compilava e non capivo il perché, scoperto il motivo ho ritenuto utile considerare "exit" una parola chiave del C, anche se non lo è.

Concordo con te. Non mi ricordavo di questa cosa.

Quote

Sicuramente il codice commutava troppo velocemente i relè che neanche si mettevano in movimento.

Probabilissimo. Come detto, il codice è scritto ma non è stato proprio testato con nulla.

Campa1957

Quote

Sicuramente il codice commutava troppo velocemente i relè che neanche si mettevano in movimento.


Quote

Probabilissimo. Come detto, il codice è scritto ma non è stato proprio testato con nulla.


Confermo quanto detto da voi, i relè non si accorgevano nemmeno dei comandi del SW.
Adesso inserisco le resistenze di prova e vi aggiorno.

Andrea


Go Up