Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

De bouw van mijn modelbaan in Thailand door Thai-Bundesbahn
Vandaag om 03:04:00
Mijn eerste H0-modeltreinbaan in aanbouw door Thai-Bundesbahn
Vandaag om 02:57:45
Bouw van OCCRE G10 in CIWL livrei in spoor 1 door hervé
Vandaag om 00:27:02
La vie...Sud-Est; zolderbaan met thema zuidoost Frankrijk door Dennis1984
16 August 2025, 22:52:44
Länderbahn en Reichsbahn locomotieven. door Robert vh Prutsert
16 August 2025, 22:37:14
Onlangs gespot - gefotografeerd, de foto's door GerardvV
16 August 2025, 22:22:18
Da's Daz 2 door NS264
16 August 2025, 22:13:27
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
16 August 2025, 21:55:30
Rhätische Bahn in 0m; van Filisur naar Stuls door maartenvdb
16 August 2025, 21:48:20
Modules van Kees Gorter (vervolg) door NS264
16 August 2025, 21:38:43
Her-(her-)beginnen door J. Brans
16 August 2025, 21:13:45
Raadplaatje door GerardvV
16 August 2025, 21:05:30
Station Roodeschool door frenkievee
16 August 2025, 21:00:11
Hebden Bridge, digitale modulebaan in schaal 00. door Donny95
16 August 2025, 20:17:28
YaMoRC YD8248 Servodecoder door Nico Hoogerwerf
16 August 2025, 20:03:12
Vijfhuis (v.h. Frotterdam) door JoopSpoort
16 August 2025, 19:18:35
Esu Loksound - NS Wadloper? door Bahn-AG
16 August 2025, 19:12:39
Nederland jaren 50 op basis van mijn roots door Rob Ellerman
16 August 2025, 18:17:15
Aanpassen baanplan bestaande baan door Joz
16 August 2025, 18:12:32
Bahnstrecke 5867 door Frank 123
16 August 2025, 16:51:38
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door Mispoes
16 August 2025, 16:48:43
Einde HSIJ (stoomtrein Hoogovens) in zicht door R1954
16 August 2025, 14:43:06
Bentheimer Eisenbahn, gisteren, vandaag en morgen. door Hans Reints
16 August 2025, 14:23:07
Fleischmann Anna ombouw. door puntenglijder
16 August 2025, 14:05:01
Ervaringen met bezorgdiensten (PostNL, DHL, etc) door Ronald Halma
16 August 2025, 13:24:14
Ombouw/Pimpen Bolle neuzen door bollen neus
16 August 2025, 12:35:17
24e smalspoormodelbouwdagen 30 en 31 augustus 2025 bij Stoomtrein Katwijk Leiden door Peter Soonius
16 August 2025, 12:20:07
Klein mobiel ontwerp met thema stadsmuren door Slotticar
16 August 2025, 11:58:44
BR-18.6 Schaal-0. door FritsT
16 August 2025, 11:50:36
Overzicht "Het is Weekend" foto's! door Vroeger
16 August 2025, 11:45:26
  

Auteur Topic: Pulsbreedte via Arduino en transistor  (gelezen 5438 keer)

wimk

  • Offline Offline
  • Berichten: 827
    • kusee.nl
Pulsbreedte via Arduino en transistor
« Gepost op: 29 September 2016, 20:48:08 »
Beste mensen,

Ik zit nogal met mijn handen in het haar, weet niet wat ik fout doe.
Het gaat om een analoge baan. Met een Arduino Mega wil ik een pulsbreedte-signaal opwekken, via een transistor versterken, zodat ik de motor van de trein vanuit de Arduino kan regelen. De schakeling is zoals in het plaatje hieronder weergegeven. De weerstand is 1 kOhm, de transistor is een S8050 (NPN) transistor.


De puls wek ik op met de Arduino op poort 11 met in het Arduino-programma de volgende regel:
  analogWrite(11,100);
De waarde 11 in dit commando is het poortnummer van de Arduino Mega.
De waarde 100 in dit commando kan varieren tussen 0 (geen signaal) en 255 (vol signaal).

Als ik het geheel bouw, en geef de waarde 0 in het analogWrite-commando, dan gaat de trein toch rijden. Bij 255 rijdt hij wel wat harder, maar ook niet heel hard. De transistor wordt erg heet, en als ik wat langer doorga (enkele tientallen seconden), dan brandt deze door, zal daarna in de kapotte situatie altijd geleidend zijn maar ook dan weer voor een deel.

Mijn gedachte is, dat ik het signaal vanuit de Arduino (490 hertz) op de basis van de transistor zet, dat de stroom vanuit Arduino via basis-collector bij een voltage van 5 volt en een weerstand van 1000 ohm dan 5/1000 oftewel 5 milliampere zal zijn, en dat de stroom emittor-collector (bij een versterkingsfactor 100 van de transistor) dan 500 milliampere kan zijn. Het datasheet van de S8050 geeft aan een voltage van 40 (dus in mijn situatie met 12 volt ruim voldoende) bij een stroom van 0.5 Amp (dus ook voldoende; de loc trekt normaal 300 tot 400 milliampere).

Wat doe ik fout? Waarom rijdt de loc ook bij een aansturing met 0 (nul) in de analogWrite van de Arduino? Waarom wordt de transistor zo heet, dat hij bij langer gebruik (een halve minuut) doorbrandt? Wat ik vooral vreemd vindt is het feit dat de loc bij een stuursignaal van nul toch gaat rijden. Zonder puls zou dat niet mogen. Is er doorslag op de transistor, een soort kortsluiting op de transistor? Ik weet het niet meer.

Graag tips of hits hoe ik dit kan oplossen.
Wim K
« Laatst bewerkt op: 31 October 2016, 10:18:44 door Bert van Gelder. Reden: Titel voorzien van hoofdletter (s) »

Dirk J

  • Offline Offline
  • Berichten: 1457
Re: pulsbreedte via arduino en transistor
« Reactie #1 Gepost op: 29 September 2016, 20:59:18 »
Het lijkt erop dat je transistor een beetje opengestuurd wordt door een lekstroompje. Zet eens een weerstand van bijvoorbeeld 1k tussen de basis en de emitter van de tor, dan is dat in ieder geval opgelost.

Klaas Zondervan

  • Offline Offline
  • Berichten: 26709
    • Pagina van klaas
Re: pulsbreedte via arduino en transistor
« Reactie #2 Gepost op: 29 September 2016, 21:34:27 »
Welke uitvoering heb je van de S8050, A, B of C? Het verschil zit in de stroomversterkingsfactor.
Dat hij warm wordt kan komen doordat hij onvoldoende wordt opengestuurd.
Projecten:
Dubbelom
Halte Assel
Geluk, dat is vooraan staan als de overweg gesloten is.

wimk

  • Offline Offline
  • Berichten: 827
    • kusee.nl
Re: pulsbreedte via arduino en transistor
« Reactie #3 Gepost op: 29 September 2016, 21:40:01 »
Ik heb de volgende in china besteld:
https://www.aliexpress.com/item/Free-Shipping-100-Pcs-S8050D-S8050-8050-TO-92-NPN-Transistor/32324646539.html?spm=2114.13010608.0.0.HHzCsI
Volgens mij is dat de D-versie (dus geen A,B,C).
Wat bedoel je met "onvoldoende opgengestuurd", hoe kan ik dat verbeteren? Andere weerstand bij de basis?

@Dirj J:  bedoel je een tweede weerstand tussen Basis en Emitter? Dat veroorzaakt dan toch alleen maar een lekstroom in het Arduino-Basis-Emittor circuit?

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: pulsbreedte via arduino en transistor
« Reactie #4 Gepost op: 29 September 2016, 21:50:57 »
Het principe is OK, maar ik denk dat de transistor niet helemaal opengestuurd wordt door die 1 k weerstand, verlaag die eens (in stappen) naar b.v 470 ohm.

Vergeet ook niet een fly back diode over de motor.

Gebruik anders een ULN2804 als buffer.
El Carrilet
"te dom om te poepen"
MH

wimk

  • Offline Offline
  • Berichten: 827
    • kusee.nl
Re: pulsbreedte via arduino en transistor
« Reactie #5 Gepost op: 29 September 2016, 21:54:53 »
Ik zal eens proberen met een lagere weerstand, de stroom door de Arduinopoort kan immers hoger worden, tot 40 kamp.

Wat is dat, een ULN2804 ?
En hoe sluit je die aan?
« Laatst bewerkt op: 29 September 2016, 21:56:33 door wimk »

Klaas Zondervan

  • Offline Offline
  • Berichten: 26709
    • Pagina van klaas
Re: pulsbreedte via arduino en transistor
« Reactie #6 Gepost op: 29 September 2016, 21:58:48 »
Een D versie dus. Dat was ik bij transistors nog niet tegengekomen. Die heeft minimaal een stroomversterking van 160. Dus als je 500mA in de collector wil hebben dan moet je minstens 3 mA in de basis sturen. En dat is dan nog krap, beter is om het dubbele te sturen om zeker te weten dat de transistor in verzadiging gaat.

Heb je een transistortester (zit vaak op een universeelmeter)? Dan kun je testen wat de werkelijke stroomversterking is.
Ik vind trouwens een transistor voor 0,5A een beetje krap voor deze toepassing. Als je een loc start vanuit stilstand kun je een stroom van 1A verwachten.
Projecten:
Dubbelom
Halte Assel
Geluk, dat is vooraan staan als de overweg gesloten is.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: pulsbreedte via arduino en transistor
« Reactie #7 Gepost op: 29 September 2016, 22:10:29 »
Citaat
Wat is dat, een ULN2804? En hoe sluit je die aan?
Even googlen...  ::)



Een 8x darlington drivertrap voor (stappen)motoren

met een Imax van 500 mA per buffer, maar je kunt meerdere parallel schakelen.

Sluit de Arduino PWMuitgang 11 aan op ingang 1 van de ULN2804, de overeenkomstige uitgang 18 van de ULN op de motor, andere motoraansluiting en common pin 10 van de ULN op 12 V, massa 9 op massa van de Arduino. Fly back diodes zitten er al in.

Volgens de data sheet kan die 8050 wel 1,5 A hebben, dus daar ligt het niet aan. Anders neem je b.v. een BD135, ook goed voor 1,5 A maar met een piek van 3 A.
« Laatst bewerkt op: 29 September 2016, 22:44:37 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

Dirk J

  • Offline Offline
  • Berichten: 1457
Re: pulsbreedte via arduino en transistor
« Reactie #8 Gepost op: 29 September 2016, 22:53:33 »
bedoel je een tweede weerstand tussen Basis en Emitter? Dat veroorzaakt dan toch alleen maar een lekstroom in het Arduino-Basis-Emittor circuit?

Ik bedoel een weerstand die met een pootje aan de basis hangt, en met het andere pootje aan de emitter. Zo'n weerstand zorgt dat er echt geen stroom loopt door de basis-emitter overgang wanneer deze niet actief aangestuurd wordt. Zonder zo'n weerstand kan de transistor soms toch een klein beetje opengestuurd wordt op momenten dat dat niet de bedoeling is. Als dat gebeurt wordt de transistor namelijk erg warm en krijgt de motor toch wat spanning terwijl hij stil had moeten staan omdat het stuursignaal "0" is. En dat is nu precies wat jij beschrijft.

Vandaar mijn vraag om het even te testen met een weerstand van bijvoorbeeld 1k of 10k tussen de basis en de emitter.


72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: pulsbreedte via arduino en transistor
« Reactie #9 Gepost op: 29 September 2016, 23:19:49 »
Een pull down weerstand...

analogWrite() wil overigens een waarde van 0..255 voor een duty cycle van 0%..100%. Als je doet analogWrite(11,100);heb je dus maar een duty cycle van 100/255 = 39%.

Zie https://www.arduino.cc/en/Tutorial/PWM.
El Carrilet
"te dom om te poepen"
MH

wimk

  • Offline Offline
  • Berichten: 827
    • kusee.nl
Re: pulsbreedte via arduino en transistor
« Reactie #10 Gepost op: 30 September 2016, 07:47:33 »
Dat  bij anlogWrite een waarde van 100 de trein langzaam rijdt weet ik, dat is nou ook juist de bedoeling.
Maar als 72sonett even in mijn eerste vraag leest, dan is te lezen:
Citaat
en geef de waarde 0 in het analogWrite-commando, dan gaat de trein toch rijden
En dat is nou juist mijn vraag. Bij een waarde nul rijdt de trein toch. In mijn beleving is 0/255 gelijk aan nul, en zou de trein stil moeten blijven staan. Een tweede punt is, dat na ca. 30 seconden de transistor zo heet geworden is, dat deze doorbrandt.


Ik ga de komende tijd drie adviezen van jullie opvolgen:
1. Ik ga het advies van DirkJ opvolgen, en er een extra weerstand bij plaatsen tussen basis en emitter.
2. Ik ga het advies van Klaas opvolgen en een sterkere transistor erin plaatsen die meer dan 0.5 amp aankan.
3. Ik ben inderdaad vergeten een terugloopdiode over de motor te zetten. Dat zou een piekspanning kunnen veroorzaken die het doorbranden versterkt. Diode komt er dus ook bij.

Het resultaat kan even een weekje duren, maar ik zal hier in deze post mijn bevindingen weergeven.

Harm

  • Offline Offline
  • Berichten: 16
Re: pulsbreedte via arduino en transistor
« Reactie #11 Gepost op: 30 September 2016, 08:39:16 »
Het voorstel van 72sonnet om een ULN driver te nemen lijkt me voor deze toepassing prima, die is bedoeld om door logica aangestuurd te worden. Neem dan wel de ULN2803 (ipv UNL2804), de '03 is specifiek voor TTL ingangsspanningen bedoeld.

Voor een losse transistor zou ik een Darlington in een vermogensbehuizing gebruiken. Die stuur je makkelijker open met een kleine stroom en kan zijn warmte goed kwijt.


dickkoning

  • Offline Offline
  • Berichten: 140
Re: pulsbreedte via arduino en transistor
« Reactie #12 Gepost op: 30 September 2016, 10:21:15 »
Hoi

het kan eenvoudiger
bestel een simpele H brug motordriver op bv ebay of alieexpress

Voor een klein vermogen zoiets: http://www.ebay.com/itm/H-bridge-Stepper-Motor-Dual-DC-Motor-Driver-Controller-Board-L9110S-For-Arduino-/161308004962?hash=item258eb4d262:g:OaMAAOSwXeJXdeF9

ben je voor 0,99 euro klaar

Dick

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: pulsbreedte via arduino en transistor
« Reactie #13 Gepost op: 30 September 2016, 11:57:16 »
Dat is wel de eenvoudigste hardware oplossing en de loc kan dan ook achteruit rijden.

Dit is voor $1.67 een ULN2003 board inclusief stappenmotortje (die je niet hoeft te gebruiken):



Achteruit rijden kan ook als je aan wimk's oorspronkelijke schema een omschakelrelais toevoegt op een 2e Arduino pin:



El Carrilet
"te dom om te poepen"
MH

Klaas Zondervan

  • Offline Offline
  • Berichten: 26709
    • Pagina van klaas
Re: pulsbreedte via arduino en transistor
« Reactie #14 Gepost op: 30 September 2016, 12:21:52 »
Vriendelijk verzoek: als je vragen hebt naar aanleiding van dit draadje, die vragen dan hier stellen en niet via PB.
Projecten:
Dubbelom
Halte Assel
Geluk, dat is vooraan staan als de overweg gesloten is.