Pagina 1 di 2

Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 20:14
da savo98
Buonasera a tutti,

da neofita ho realizzato il mio primo programma in micropython.
Utilizzo un modulò con 8 relè.
Il programma funziona correttamente, tranne quando alimento il raspberry pi Pico e mi si attivano tutti i relè.

Come evito questo problema?

All'accensione del RPi Pico devono essere tutti diseccitati!

Non so più come risolvere.
Ho già provato a settare i relè su low sia nel while True che prima di quel ciclo, ma nulla.

Grazie mille

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 20:22
da speedyant
Prova apostare il programma.

Hai modo di fare verifiche strumentali senza "carichi", ovvero il solo Pico senza schede relè?

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 20:42
da djnz
E magari vediamo anche quali relé e collegati come.

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 20:45
da stefanopc
Che tipo di rele stai utilizzando?
Disegna uno schema di una singola uscita.
La scheda relè e la scheda del micro sono alimentate con un singolo alimentatore?
Le masse come sono collegate?
Ciao

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 20:59
da savo98
Di seguito il programma:

- - -
nota mod.: listato eliminato, è riproposto in #9.
- - -

I relè sono collegati ai 5v del RPi (per ora li ho provati sempre e solo senza carico, quindi non è quello il problema)

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 21:00
da savo98
I "low" e gli "high" sono invertiti, perché non sapevo che bastava scollegare il GND del modulo relè.
Comunque anche se stacco il GND, mi restano eccitati i relè appena accendo il rasp. Poi appena clicco il pulsante , fa il suo ciclo giusto ed è come se resettasse tutti i relè e poi funziona giusto

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 21:03
da savo98
stefanopc ha scritto:Che tipo di rele stai utilizzando?
Disegna uno schema di una singola uscita.
La scheda relè e la scheda del micro sono alimentate con un singolo alimentatore?
Le masse come sono collegate?
Ciao



Sono alimentati tramite il rasp.
Il modulo relè è collegato al gnd del rasp

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 21:16
da djnz
Il programma non è leggibile. Per non perdere l'indentazione va racchiuso tra i tag [code]

Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 21:30
da savo98
Scusatemi, non ricordavo

p.s. vi ricordo che per eccitare un relè utilizzo ".low()" e per diseccitarlo ".high" perché ho scoperto dopo che mi bastava togliere il GND sul modulo dei relè. (sarà una modifica successiva questa)
Ora mi interessa che i relè non si eccitino tutti all'avvio del rasp



Codice: Seleziona tutto


import machine, onewire, ds18x20, utime

#lista GPIO relè (output)
relay_resistenza = machine.Pin(28, machine.Pin.OUT)
relay_macinino = machine.Pin(16, machine.Pin.OUT)
relay_dosatore = machine.Pin(17, machine.Pin.OUT)
relay_motorid = machine.Pin(18, machine.Pin.OUT)
relay_pompa = machine.Pin(19, machine.Pin.OUT)
relay_ev_caldaia = machine.Pin(20, machine.Pin.OUT)


#lista GPIO input
micro_gruppo = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_DOWN)
button_caffe_corto = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN)
ds_pin = machine.Pin(1)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()

counter_corto = 0
posizione_micro = 0  #se = 0 non è premuto, se = 1 è premuto
ciclo_macinatura = 0 #se = 1 l'ha eseguita


while True :
   
   
    ######## imposta relè spenti appena acceso il raspberry ########
   
       
   
    ######## controllo temperatura caldaia e attivaz./disattivaz. resistenza ########
    ds_sensor.convert_temp()
    utime.sleep(0.5)
    for rom in roms:
        temp = round (ds_sensor.read_temp(rom),2)
        print (temp, "Celsius")
    utime.sleep(0.5)
   
    if temp < 93:
        relay_resistenza.low()
       
    if temp > 95:
        relay_resistenza.high()
   
    ######## controllo del microinterruttore per motoriduttore del gruppo ########
   
    if micro_gruppo.value()==1:
        utime.sleep(0.1) ##############################################################modificare a 0.01 finite le prove
        posizione_micro = 1
        print("posizione micro: schiacciato")
    if micro_gruppo.value()==0:
        utime.sleep(0.1) ##############################################################modificare a 0.01 finite le prove
        posizione_micro = 0
        print("posizione micro: non schiacciato")
   
    ######## ciclo erogazione caffè ########
   
    if button_caffe_corto.value()==1:  #quando viene premuto tasto caffè corto
        counter_corto = 1
        utime.sleep(0.1)
        print("Erogazione caffè corto")
   
        while counter_corto == 1 and posizione_micro == 0 and ciclo_macinatura == 0:
            utime.sleep(1)
            relay_macinino.low() #Macinino ON
            print("Macinino ON")
            utime.sleep(3)
           
            relay_macinino.high() #Macinino OFF
            print("Macinino OFF")
            utime.sleep(2)
           
            relay_dosatore.low() #Dosatore ON
            print("Dosatore ON")
            utime.sleep(1.5)
           
           
            relay_dosatore.high() #Dosatore OFF
            print("Dosatore OFF")
            utime.sleep(1)
            ciclo_macinatura=1
       
            while counter_corto == 1 and posizione_micro == 0 and ciclo_macinatura == 1:
                       
                relay_motorid.low() #Motorid. gruppo ON
                print("Motorid. gruppo ON")
                utime.sleep(0.1)
                posizione_micro=0
                       
           
                while micro_gruppo.value()==1 and ciclo_macinatura == 1: #quando il micro viene premuto
                    posizione_micro = 1
                    print("Micro premuto")
                    relay_motorid.high() #Motorid. gruppo OFF
                    print("Motorid. gruppo OFF")
                    utime.sleep(1) #aspetta 1 secondo
                    relay_pompa.low() #Pompa ON
                    relay_ev_caldaia.low()  #Ev Caldaia ON
                    print("Pompa e EV caldaia ON")
                    utime.sleep(5) ##############################################################Ancora da regolare dose del caffè corto
                    relay_pompa.high() #Pompa OFF
                    relay_ev_caldaia.high()  #Ev Caldaia OFF
                    print("Pompa e EV caldaia OFF")
                    utime.sleep(2) ##############################################################Settare tempo attesa sgocciolamento
                    relay_motorid.low() #Motorid ON
                    print("Motorid gruppo ON")
                    utime.sleep(5) ##############################################################Ancora da regolare tempo ritorno motorid. alla posizione principale
                    relay_motorid.high() #Motorid OFF
                    print("Motorid gruppo OFF")
                    utime.sleep(1)
                    print("Erogazione caffè corto completata")
                    posizione_micro = 0
                    counter_corto = 0
                    ciclo_macinatura=0


Re: Modulo relè si eccita all'avvio del RPi Pico

MessaggioInviato: 21 dic 2022, 21:41
da savo98
Ho il sospetto che il modulo a 8 relè che ho comprato su amazon sia stato un precedente reso, poiché c'era il ponticello giallo mezzo scheggiato.
Probabilmente aveva questi problemi e il venditore ha cercato di rifilarmela dietro.

A meno che io non conosca un preciso comando o che abbia sbagliato a caricare il programma sul rasp, nella mia scarsissima esperienza non vedo errori