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
Modulo relè si eccita all'avvio del RPi Pico
Moderatore:
Paolino
17 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Prova apostare il programma.
Hai modo di fare verifiche strumentali senza "carichi", ovvero il solo Pico senza schede relè?
Hai modo di fare verifiche strumentali senza "carichi", ovvero il solo Pico senza schede relè?
Son quello delle domande strane!
0
voti
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
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
600 Elettra
0
voti
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)
- - -
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)
Ultima modifica di
WALTERmwp il 22 dic 2022, 2:38, modificato 1 volta in totale.
Motivazione: Eliminato listato codice
Motivazione: Eliminato listato codice
0
voti
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
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
0
voti
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
0
voti
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
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
0
voti
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
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
17 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)





