Vraag en antwoord > Elektronica en analoog

Aansturing via Arduino werkt niet goed

(1/3) > >>

wimk:
Beste mensen,

Mijn plan is om via een Arduino het rijden van de treinen aan te sturen. Dat werkt bijna, maar niet helemaal. Ik vraag me af waarom niet, wie kan me helpen en met ideeën komen waarom het niet gaat zoals ik verwacht dat het zou moeten gaan?

Situatie: Wat vereenvoudigd is mijn baan een ovaaltje. Opgedeeld in 7 secties. Iedere sectie een stuk ongedetekteerd (ca. 1 meter), en een stuk wel gedetekteerd (ca.0,75 m). Zeven maal parallel is de aansturing zoals in onderstaande tekening.



Links komt PWM-signaal van Arduino. Via optocoupler PC817 (ter voorkoming van piekspanning en beschadiging Arduino) is deze gekoppeld met het circuit van de 12 volt voor rijden van de treinen. Dat gaat via transistor BD679 als versterker. De diode rechts onderaan is als smoor-diode bedoeld (bij uitschakelen werkt motor van trein als dynamo en zou piekspanning kunnen geven). De gedetekteerde sectie gaat via een terugmelder zoals in de encyclopedie is beschreven; deze geeft bij berijden van deze sectie via optocoupler PC814 een signaal aan de Arduino.

Het gaat bijna overal goed. Als ik signaal via de Arduino aanlever, dan versterkt de transistor, en dan rijdt de trein. Zet ik het Arduino-signaal op nul, dan stopt de trein. De terugmelding gaat overal goed, de optocoupler PC814 merkt stroomvoering en geeft het signaal aan de Arduino door (die dan kan reageren als aansturing). Zeven secties onafhankelijk van elkaar, werkt bijna overal goed.

Helaas. Sectie 3 krijgt ook spanning als ik de pin vanaf de Arduino op nul zet (zelfs als ik het pinnetje uit de Arduino haal. Na lang testen heb ik gemerkt dat dit afhankelijk is van de stand van sectie 1. Als daar vanaf de Arduino spanning op wordt gezet, dan blijkt de trein in sectie 3 ook te rijden (mag dus niet). Ik heb alles gecontroleerd, kortsluiting zit er niet in, een defecte transistor lijkt het ook niet te zijn, heb ik ook al eens vervangen. Het gebeurt niet bij andere secties, daar werkt alles correct. Er is alleen een (ongewenste) wisselwerking van sectie 1 met sectie 3.

Zou de smoor-diode wellicht invloed kunnen hebben?
Zou er een omgekeerde stroom kunnen lopen door de BD679?
Zie ik iets over het hoofd en is mijn ontwerp niet correct?

Kortom, wie kan mij op weg helpen om de oorzaak te vinden?
Wim K

bask185:
Ik lees 7 secties. Dus vraag 1: gebruik je een arduino mega met voldoende pwm kanalen, want een uno/nano heeft maar 6 pwm kanalen.

Dat gezegd hebbende, kan het wel degenlijk met een uno/nano icm software pwm. Daarvoor heb ik een makkelijk te gebruiken Weistra library voor gemaakt.

Mijn eerste opmerking, de linker optocoupler is in principe overbodig. Maar baadt het niet, schaadt het niet...

Opmerking 2, ik zie ook geen voorschakelweerstand in serie met deze optocoupler staan. Ik weet niet uit mijn hoofd of de pc817 zonder voorschakelweerstanden kan (volgens mij niet), maar aangezien het merendeel rijdt bij jou, zal je het vast goed gedaan hebben.

Opmerking 3. Bij je detecties zie ik vier diodes, strikt gezien heb je er maar 2 nodig daar je maar in 1 richting rijdt.


--- Citaat ---Zou de smoor-diode wellicht invloed kunnen hebben?
--- Einde van citaat ---
Als deze diode defect raakt, sneuvelt verder alleen de BD679. Op het eerste oog lijkt het me onwaarschijnlijk dat die andere secties beinvloedt.
 

--- Citaat ---Zou er een omgekeerde stroom kunnen lopen door de BD679?
--- Einde van citaat ---
Niet zoals in jouw tekening dan spert die. Maar als hij gesneuveld is, wie weet. Maar ik denk als je de 12v en massa omdraait dat je andere en meer problemen gaat krijgen.


--- Citaat ---Zie ik iets over het hoofd en is mijn ontwerp niet correct?
--- Einde van citaat ---
Niet zozeer aan je probleem gerelateerd maar ik zie geen overstroom of kortsluit preventie. Als je tussen de emitter en de massa 2x 1Ohm weerstanden parallel zet (zodat ze samen een weerstand van 0.5 ohm hebben) kan je de emitter pin aan een analoge ingang van de arduino hangen. Dan kan je effectief de stroom meten en vroegtijdig afschakelen. Als je een voeding pakt die niet meer dan 1.5A levert dan lijkt het me ook redelijk veilig. Maar de arduino's kunnen dan ook resetten bij een kortsluiting en dat lijkt mij onwenselijk.

Terug naar je probleem

--- Citaat ---Sectie 3 krijgt ook spanning als ik de pin vanaf de Arduino op nul zet (zelfs als ik het pinnetje uit de Arduino haal. Na lang testen heb ik gemerkt dat dit afhankelijk is van de stand van sectie 1.
--- Einde van citaat ---
Er komen 3 dingen bij mij naar boven.

1). De led kathodes van de pc817 zouden aan elkaar kunnen hangen. Zo zou 1 arduino pin 2 secties kunnen schakelen. Maar dan zouden beide pinnen beide secties moeten schakelen -> onwaarschijnlijk
2). Misschien dat je een sluiting kan vinden tussen de bases van de bd679 of er kan een sluiting zitten tussen de pc817 en die 10k weerstand van beide secties.
3). Een software fout.

Verder kan ik er niet veel meer over zeggen. Om mij of anderen jou verder te laten helpen, zou ik:
1). een geheel schema tekenen van alles. (en praat hardop tegen jezelf wanneer je dat doet, I kid you not)
2). foto's....
3). Post wat software op een manier, hier, github, mail, iets... Je kan het ook naar me mailen, maar ik weet nog niet of ik er tijd voor heb om er grondig naar te kijken.

Mvg,

Bas

wimk:
Dag Bas,

Bedankt voor je uitgebreide antwoord.
1. Ik gebruik een Arduino mega (chinese kloon).
2. Linker optocoupler zit er om piekspanningen uit het rijd-circuit naar de Arduino terug te voorkomen. Zou beschadiging aan Arduino kunnen veroorzaken.
3. Voorschakelweerstand bij PC817: Die zet er wél, vergeten op tekening te tekenen. Sorry voor de onduidelijkheid.
4. Detectie met 4 diodes: inderdaad overbodig, maar die terugmelders had ik liggen, met 2 diodes zou ik nieuw moeten maken. Scheelt weer solderen. Inderdaad maar 2 nodig, maar mag verder niet uitmaken.

N.a.v. je 3 opmerkingen:
1) Wat bedoel je precies met "led kathodes van pc817"? Bedoel je dat van sectie 1 de pc817 altijd stroom voert wegens kortsluiting? Ik ga het nazoeken.
2) Kortsluiting tussen basis bd679? Die vraag snap ik niet. Alle 7 secties zijn goed van elkaar gescheiden, dus sluiting tussen de ene en de andere sectie is uitgesloten.
3) Softwarefout. Nee, ik stuur mijn Arduino nu nog aan met een hulpprogramma om de werking van pmw-pins en terugkoppeling te testen. Het plan is om later, als alles correct werkt, de sturing verder uit te breiden (meer treinen op het ovaaltje).

Het hulpprogramma wat er nu op de Arduino staat werkt als volgt:

* Geef alleen sectie-1 stroom. Trein rijdt dan over sectie 1 tot meldsectie.
* Arduino reageert op meldsectie. 2 seconden sectie-1 afschakelen (stoppen), dan Arduino pin van sectie 1 en sectie 2 spanning geven (en niet meer luisteren naar meldsectie 1), alle andere secties staan uit.
* Dan rijdt de trein verder uit meldsectie-1 en door sectie-2.
* Vervolgens in meldsectie-2 hetzelfde proces.
* En zo iedere sectie.
Ik heb zitten testen met afschakelen, bij alle secties uitschakelen gaat het goed, maar als mijn trein in sectie-3 is, en ik dan alleen sectie-1 inschakel, dan rijdt de trein in sectie-3 (iets langzamer) gewoon door, wat dus niet zou mogen.

Alle andere secties werken perfect.

Samenvattend: ik ga kortsluiting bij pc817 testen en eens kijken of daar de fout zit.

Groeten, Wim K

bask185:

--- Citaat ---Wat bedoel je precies met "led kathodes van pc817
--- Einde van citaat ---
Sorry, pin 2 van het IC


Ik zou sws alle verbindingen nagaan tussen de optocouplers van beide secties.

Met alleen dit aan informatie, kom ik op 2 conlusies.

--- Citaat ---Ik heb zitten testen met afschakelen, bij alle secties uitschakelen gaat het goed, maar als mijn trein in sectie-3 is, en ik dan alleen sectie-1 inschakel, dan rijdt de trein in sectie-3 (iets langzamer) gewoon door, wat dus niet zou mogen.
--- Einde van citaat ---
Of er zit ergens een kortsluiting in waarbij die optocoupler of transistor op 1 pin werken.

Of

--- Citaat ---3) Softwarefout. Nee, ik stuur mijn Arduino nu nog aan met een hulpprogramma
--- Einde van citaat ---
Ja dat kan wel zo zijn, maar als jij per ongeluk ergens pwmPin1 tikt ipv pwmPin7 om maar wat te noemen, kan je makkelijk overheen lezen.

Dus met foto's en/of een lapje code kunnen we verder kijken.

We hebben ook code tags daarvoor. Je kan je hele programma tussen deze 2 tags zetten
[ c o d e ]
   // als ik de spaties weghaal in de code tags...
[ / c o d e ]


--- Code: ---   // .. krijgen we code

--- Einde van code ---

Mvg,

Bas

Mar-Cas:
Plaats eens 'n pulldown weerstand  aan de basis van BD679.
Een zwevende basis is  nooit 'n stabiele situatie.

Caspar

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie