Go Down

Topic: Porta scorrevole (Read 1 time) previous topic - next topic

gtanix

Ciao ragazzi, chiedo scusa se ho fatto un quesito simile in hardware, ma la parte hardware e' conclusa, ora mi sorge un gran dubbio, ho una porta scorrevole, ma non so come creare il codice.
Cosa deve fare? Semplicemente quando rileva una variazione nella fotoresistenza/quando viene premuto un pulsante (ambo le cose per 2 secondi) quindi quando il segnale rimane high per 2 secondi, arduino deve dare corrente, quando non sara piu high deve togliare corrente , a che cosa, vi chiederete, dara' e togliera' corrente ad un relè DPDT che servira' ad invertire la rotazione, precisamente quando avra' corrente fara' spingere il motore in un senso viceversa quando non l'avra fara' spingere il motore in un altro. Qualcuno puo' aiutarmi?

steve-cr

Il programma è esattamente identico alla chiusura/apertura di un cancello elettrico.
Quindi devi avere
- una uscita per accensione motore
- una uscita per relè inversione
- un ingresso fotocellula
- un ingresso pulsante

Troverai diversi programmi in giro.
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

gtanix

Il programma è esattamente identico alla chiusura/apertura di un cancello elettrico.
Quindi devi avere
- una uscita per accensione motore
- una uscita per relè inversione
- un ingresso fotocellula
- un ingresso pulsante

Troverai diversi programmi in giro.
non proprio e ti dico il perche', io sto facendo un ascensore, quando arriva il piano devono passare 2 secondi e poi si deve aprire la porta, se la fotoresistenza non rileva la cabina per almeno 2 secondi le porte devono rimanere chiuse. In giro per internet non ho trovato nulla di simile e comunque non saprei come adattare un cancello in cui devi premere a mano il bottone per farlo aprire con il passaggio di una cabina per ascensore

miky_police

mi sembra che quando parli di corrente e relè stai facendo riferimento all'utilizzo di alta tensione e non bassa o bassissima come previsto nel forum.. in attesa di tue delucidazioni io mi astengo... ::)
Il vero stupido è colui che fa e rifa la stessa cosa aspettandosi risultati diversi. A.E.

gpb01

#4
Jun 12, 2018, 02:04 pm Last Edit: Jun 12, 2018, 02:04 pm by gpb01
mi sembra che quando parli di corrente e relè stai facendo riferimento all'utilizzo di alta tensione e non bassa o bassissima come previsto nel forum.. in attesa di tue delucidazioni io mi astengo... ::)
... ed io attendo le sue spiegazioni !

Guglielmo
Search is Your friend ... or I am Your enemy !

miky_police

Quote
io sto facendo un ascensore, quando arriva il piano devono passare 2 secondi e poi si deve aprire la porta....
non spiega cosa solleverà questo ascensore, se è alimentato a 220v o a 18/24/36v. Diversamente se dobbiamo supporre che sia un motoriduttore il discorso cambia. pensavo che da regolamento non si può menzionare e/o utilizzare la 220v (io, un po tendo ad estremizzare il concetto forse, escludendo anche riferimenti non direttamente espliciti). Se questo 3d così postato non è contro regolamento, significa che mi sono posto un problema inutile. In caso chiedo venia.
Il vero stupido è colui che fa e rifa la stessa cosa aspettandosi risultati diversi. A.E.

gpb01

#6
Jun 12, 2018, 02:38 pm Last Edit: Jun 12, 2018, 02:38 pm by gpb01
non spiega cosa solleverà questo ascensore, se è alimentato a 220v o a 18/24/36v.
Difatti ho già detto che stò aspettando spiegazioni, perché se fosse un progetto con motori a 220V, chiuderei il thread, ma sino a quando l'OP NON ci da delucidazioni occorre solo attendere ed evitare illazioni.

Guglielmo
Search is Your friend ... or I am Your enemy !

miky_police

#7
Jun 12, 2018, 02:40 pm Last Edit: Jun 12, 2018, 02:43 pm by miky_police
Scusa Guglielmo, pensavo che la mia affermazione fosse fuori luogo al mio post #3 e che la tua richiesta di delucidazioni fossero appunto rivolte a me e non all'op.. :D

EDIT: rileggendo in effetti io mi astengo e tu attendi :D
Il vero stupido è colui che fa e rifa la stessa cosa aspettandosi risultati diversi. A.E.

gpb01

... e che la tua richiesta di delucidazioni fossero appunto rivolte a me e non all'op.. :D
Ahi ahi ahi ... hai letto male ... :)

... ed io attendo le sue spiegazioni !
Guglielmo
Search is Your friend ... or I am Your enemy !

gtanix

Ahi ahi ahi ... hai letto male ... :)
Guglielmo
no scusate ragazzi forse non mi sono espresso correttamente, uso un h bridge per cambiare il senso di rotazione del motore, il tutto e' un progettino giocattolo, la cabina pesa si e no 20 grammi XD

docdoc

Lo ha infatti detto anche nell'altro thread:

Quote
Salve a tutti ragazzi, sto facendo un mini ascensore, il problema e' che non ho idea di come fare le porte scorrevoli,
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

gpb01

#11
Jun 12, 2018, 03:02 pm Last Edit: Jun 12, 2018, 03:02 pm by gpb01
no scusate ragazzi forse non mi sono espresso correttamente, uso un h bridge per cambiare il senso di rotazione del motore, il tutto e' un progettino giocattolo, la cabina pesa si e no 20 grammi XD
Perfetto, nessun problema :)

Guglielmo
Search is Your friend ... or I am Your enemy !

gtanix

quindi raga qualche altro consiglio?

miky_police

#13
Jun 12, 2018, 03:28 pm Last Edit: Jun 12, 2018, 03:34 pm by miky_police
#9 Perfetto!
#10 lo cercavo per risalire alla situazione iniziale, ma non lo trovavo. Grazie per il link!

Ps: penso che devi strutturare sull'utilizzo di millis() il tuo progetto. nel senso che esegui ciclicamente la lettura delle fotoresistenze e nel caso in cui leggono la presenza fissi il millis() della prima lettura, poi ciclicamente
Code: [Select]

 if (tempoPorta - millis() >= 2000) {
tempoPorta = millis();
//fai quello che devi
}
Il vero stupido è colui che fa e rifa la stessa cosa aspettandosi risultati diversi. A.E.

gtanix

che ne dite di una cosa del genere?


Code: [Select]


void setup ()
{
  pinMode (7, OUTPUT); //fanno tutte e 3 parte di un motore infatti e' giusto un esempio
  pinMode (8, OUTPUT);
  pinMode (9, OUTPUT);

}

void loop ()
{
  if (tempoPorta - millis() >= 2000)
  {
    tempoPorta = millis();
    digitalWrite (8, HIGH);
    digitalWrite (7, LOW);
    digitalWrite (9, 30);
    delay (900);
    digitalWrite (7, HIGH);
    digitalWrite (8, LOW);
    digitalWrite (9, 100);
    delay (900);

  }
}

Go Up