Poll
Question: Pilotaggio motori DC
relè - 2 (100%)
fotoaccoppiatore - 0 (0%)
Total Voters: 2

Pages: [1]   Go Down
Author Topic: Strani fenomeni pilotaggio motori DC  (Read 1208 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,
piacere di conoscervi, sono un nuovo utente e da qualche anno per i miei progetti faccio uso della mitica piattaforma Arduino.
Niente di particolarmente complicato fino a qualche mese fa, quando con alcuni amici abbiamo iniziato a realizzare un magazzino automatico caratterizzato da diversi organi di attuazione e sensori.
In questo frangente ho incontrato e risolto alcuni problemi ma alcuni di essi persistono per cui, cercando di essere preciso, ricorro a  voi per qualche suggerimento.

Il primo problema che individuo riguarda il pilotaggio di una batteria di 10 motori DC 24V, di essi devo controllare solo accensione e direzione.
I motori mettono in movimento dei nastri trasportatori. Ho utilizzato lo schema seguente che fa uso di un relè DPDT.

Capita in maniera sistematica che, con l'elettronica in attesa del segnale di start sul pin 52, se provo a tirare uno o più nastri manualmente la routine di arduino parte da sola.

Ora, so bene che mettendo in rotazione il motore DC, esso si comporta da generatore, ma è proprio questo il problema o c'è dell'altro e secondo voi come posso risolvere? con un foto accoppiatore al posto del bjt 2n3904?
E' possibile che debba mettere un diodo in parallelo alla bobina del relè anche se questo schema non lo prevede?

Grazie per i guggerimenti.


* motor_control_relay.jpg (63.84 KB, 1084x659 - viewed 28 times.)
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21660
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Devi SEMPRE (imperativo percui scritto in maiuscolo!!) mettere un diodo in paralelo alla bobbina del relá perché rischi di rompere il transistore.
Ancher un diodo in antiparalello al motore NON GUASTA.
C'é qualche controllo sul motore? un encoder?
Ciao Uwe

« Last Edit: February 08, 2012, 02:19:03 pm by uwefed » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok per il diodo in parallelo al relay, avevo già in programma di aggiungerlo.
Vorrei però un chiarimento sul diodo in antiparallelo sul motore, visto che in esso la corrente deve scorrere in entrambi i sensi, in che configurazione metto il diodo? Ne serviranno due?

Credi che questo possa determinare il disturbo che determina l'avvio della routine di arduino?

Grazie mille.
Logged

0
Online Online
Faraday Member
**
Karma: 47
Posts: 5904
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bella domanda,

non credo dipenda dalla tensione che arriva dal motore in modalita' dinamo, perche' tu hai due transistor, la quale tensione andrebbe a finire sui collettori degli stessi, senza che questo vada ad influenzare le basi, quindi non dovrebbe partire.

farei una misura con oscilloscopio per capire cosa succede a quel pin
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A quel pin intendi il pin 52 cioè quello a cui è collegato uno switch che fa partire la routine?
Logged

0
Online Online
Faraday Member
**
Karma: 47
Posts: 5904
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, se ritieni che possa essere quello,
se non trovi nulla passa al pin di star sop, e poi a tutto il resto.

se posti lo schema completo possiamo darti meglio una mano
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

BZ (I)
Online Online
Brattain Member
*****
Karma: 266
Posts: 21660
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok per il diodo in parallelo al relay, avevo già in programma di aggiungerlo.
Vorrei però un chiarimento sul diodo in antiparallelo sul motore, visto che in esso la corrente deve scorrere in entrambi i sensi, in che configurazione metto il diodo? Ne serviranno due?

Credi che questo possa determinare il disturbo che determina l'avvio della routine di arduino?

Grazie mille.

Hai ragione non puoi metterlo in paralello al motore. Puoi metterlo in antipagalello al transistore.
Ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti,
ieri provando e riprovando ho isolato il problema che sostanzialmente risiede nel sensore induttivo di prossimità con uscita PNP NO che fornisce il segnale di interrupt ad arduino.
Infatti scollegando tale pin, e forzando ad esempio la rotazione manuale dei motori non si avvia niente.
E' come se ci fosse qualche disturbo sull'output del sensore stesso che vada ad innescare l'interrupt, nonostante abbia anche inserito un debounce RC.
Lo schema di collegamento dell'induttivo lo trovate in allegato, ma ho un'altra domanda:
qualcuno sa che variazione di mV sono necessari ad innescare l'interrupt settato in modalità RISING? E' possibile alzare la soglia di eccitazione dell'interrupt di arduino?
Avete suggerimenti su possibili configurazioni da utilizzare per risolvere problemi?

Grazie mille


* Sens_indutt_pnp_no.tiff (27.55 KB, 1041x607 - viewed 58 times.)
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Giusto un aggiornamento.
Il sensore induttivo anzichè essere gestito come interrupt, viene letto con un ciclo while ad hoc, in cui rilevo le transizioni low to high.
In ogni caso però sarebbe interessante capire come mai, l'interrupt ha una soglia di eccitazione così bassa da essere superata anche solo da qualche disturbo sulla linea di input.

Grazie a tutti per l'aiuto.

Tornerò alla carica per eventuali altri inconvenienti riscontrati.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Giusto un aggiornamento.
Il sensore induttivo anzichè essere gestito come interrupt, viene letto con un ciclo while ad hoc, in cui rilevo le transizioni low to high.
In ogni caso però sarebbe interessante capire come mai, l'interrupt ha una soglia di eccitazione così bassa da essere superata anche solo da qualche disturbo sulla linea di input.

Grazie a tutti per l'aiuto.

Tornerò alla carica per eventuali altri inconvenienti riscontrati.
Logged

0
Online Online
Faraday Member
**
Karma: 47
Posts: 5904
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

purtroppo io non vedo soluzioni se non fare una misura con oscilloscopio per capire di quali entita' parliamo.
un motore mosso a mano e' una dinamo, che non produce solo "qualche disturbo", cioe' se e' da 12V produce 12V
che vanno a finire sulla linea di alimentazione,  indi misurare per fare una diagnosi
« Last Edit: February 11, 2012, 06:26:52 am by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
purtroppo io non vedo soluzioni se non fare una misura con oscilloscopio per capire di quali entita' parliamo.
Giustissimo, mi riprometto di farlo.

Dico comunque che si tratta di un disturbo perchè scollegando il sensore dal pin di interrupt e mettendo in rotazione il motore dc da 24V, non accade nulla di nulla. Non appena però ricollego il sensore e forzo la rotazione, l'arduino riceve l'interrupt.

Si ha un'idea della variazione di tensione sufficiente  a far scattare l'interrupt? Così giusto per saperne parlare.

Grazie ancora
Logged

0
Online Online
Faraday Member
**
Karma: 47
Posts: 5904
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa ma tu dici che non stai usando il sensore per creare un interrupt, perche' poi dici che e' un interrupt la causa del problema ?
cmq i livelli di segnali che discrimina arduino sono sempre dello stesso livello, sia che tu stia usando quel segnae coe interrupt sia che lo stia usando per altre cose.
servono ameno 3V per fare intendere come Alto un segnale in ingresso ad un pin
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
scusa ma tu dici che non stai usando il sensore per creare un interrupt, perche' poi dici che e' un interrupt la causa del problema ?
Magari si è creata un pò di confusione in merito.
Le cose stanno così: un sensore induttivo ha il compito di individuare un target metallico raggiunto il quale bisogna interrompere l'avanzamento di un motore.
In una prima fase, leggevo l'output di tale sensore come interrupt.
Capitava spesso che il sensore forniva l'interrupt al sistema nonostante  non ci fosse nessun corpo metallico di fronte ad esso.
Era come se la linea del sensore fosse soggetta a disturbi, alcuni dei quali potevano essere causati in maniera volontaria, come descritto in precedenza.

Per ovviare a tale inconveniente ho quindi modificato la modalità di lettura del sensore, non impiegando più l'interrupt ma utilizzando un cilco while che rileva le transizioni low to high del sensore stesso.
Il problema si è risolto quindi, ma serebbe interessante capire cosa faceva scaturire l'interrupt.

Grazie per il chiarimento sui livelli di input.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

forse il motore usato come "dinamo" ignetta sulla massa del circuito una tensione tale da falsare la percezione dei livelli sui pin
Logged

Pages: [1]   Go Up
Jump to: