2 TLC5940 + 18 servo's

Beste Co'rs

Ik wil graag 18 servo's aansturen met een Mbed van NXP. omdat een mbed maar 16 pwm uitgangen heeft, heb ik een 3tal TLC5940 (led driver) gesampled.

Nou heb ik de datasheet gelezen, maar nou is me niet geheel duidelijk hoe ik dit moet gaan aanpakken. Heeft er hier iemand ervaring met deze chips in combinatie met servo's, en zijn er dingen waar aan ik moet denken?

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Oke, er is mij wat meer duidelijk. Ik heb ook zelf wat extra info gevonden. O.A voorbeelden.

Wat ik echter niet begrijp is hoe men van de 12bits (4095) bits pwm komt bij een puls signaal van 1ms dan wel 2ms

Wat ik in de library voor aduino terug vind is dat deze pulsen de volgende waarde hebben:

1ms = 204
2ms = 408

Men stuurt dan vervolgens:

4095 - 204 = 3891
of
4095 - 408 = 3687

via serieel of spi naar de chip.

echter in een library voor de mbed vind ik steeds het getal 265 terug en het getal:3930

kan iemand mij vertellen hoe ik bereken welk getal gelijk staat aan 1ms en hoe ik dit bereken?

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Bedenk wat de gsclk pin doet op de tlc5940. Welke freq. stop je hier in?

Waar ben je naar op zoek? Een PWM periode van 1 ms? Of moet het sginaal gedurende 1 PWM periode 1 ms hoog zijn?

@aanuit: Periode = 20ms, PWM signaal mag varieren tussen 1ms en 2ms (dus 5 tot 10%: je gebruikt niet de hele PWM range 0-100%).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Kan je dan niet beter door middel van twee PWM pinnen de TLC regelen?

Een PWM poort die met 2.048MHz aanstuurt(2ms max = 4096) en de andere PWM poort die de enable pin 2ms hoog maakt en 18ms laag?

Dan kan je in 4096 stapjes je servo's regelen.

Ik heb een library voor de mbed gevonden (deze is HIER:
http://fablab.nu/images/projects/hexapod/Basic_TLC5940_10bit_ADC.zip
te downloaden) tevens is deze op de site van de mbed te downloaden.

Ik ben gisteren bezig geweest met deze chips in combinatie met de mbed.Echter kreeg ik hem gisteren nog niet aan de praat. Dit komt voornamelijk door twee dingen, de eerste is dat er bij de library geen duidelijk aansluit schema aanwezig is. Ik heb dus nu bijvoorbeeld geen idee waar ik met mijn miso naar toe moet. Iemand enig idee? (heb hem nu NIET aangesloten).

Omdat ik op Deze website (waar de library vandaan komt):
http://fablab.nu/index.php/projects/20-hexapod-six-legged-robot/19-hex…
ook nergens terug kan vinden dat deze aangesloten is. Daarbij komt dat ik in het filmpje ook geen connectie op de miso zie zitten. (heb overigens de eigenaar van de website een mail gestuurd voor aansluit details, maar nog nul reactie op gehad).

Wat me verder nog onduidelijk is, is wat er gebeurd als Iref "zwevend" is (aangezien ik deze in eerste instantie "vergat" aan te sluiten).

Later las ik dat deze pin zorgt voor de stroom begrenzing van de outputs. Ik vraag me dus af wat de gevolgen waren van deze tijdelijke "zwevende" situatie. Daarnaast wil ik graag weten wat de gemiddelde hobby servo qua stroom nodig heeft op zijn signaal pin. In de meeste schema's op internet zit de IRef namelijk met een 2.2k weerstand verbonden met massa, waardoor er z'n 18ma maximaal per uitgang geleverd kan worden. Ik vermoed echter dat dit voor leds bedoeld is en niet voor servo's.

Ook ben ik benieuwd hoe ik die library uitbreidt naar een cascade van meerdere TLC5940.

@Led-Maniak,
Je vraagt mij of ik niet beter .... kan doen. Ik moet je eerlijk zeggen, ik heb geen idee. Het is de eerste keer dat ik met deze chip werk. dus ik weet niet wat "beter" is.

@rew
Correct, periode is 20ms waarvan het pulsje 1ms t/m 2ms duurt.

[Bericht gewijzigd door pinky-t op dinsdag 22 oktober 2013 12:04:06 (12%)

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Heb gisteren avond de IREF verbonden via een 2K2 weerstand aan de GND, dit betekend dat er nu 18ma op de uitgangen gezet wordt. Echter heeft het functioneel nog niets geholpen, omdat ik nog steeds niet zeker weet of ik het ic nu goed heb aangesloten.

suggesties zijn nog steeds heel erg welkom :)

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Uhm, als ik het mij goed herinner is een TLC5940 current sink. Je hebt dus een pull-up weerstand op elk kanaal nodig en op dat moment begint hij inverterend te werken.

Waarom gebruik je trouwens een TLC5940 en niet een 74HC595 of nog makkelijker.. een demux.

Dan schakel je met de controller steeds van kanaal en afhankelijk van hoe lang de puls moet zijn blijf je bij dat kanaal en schakel je daarna door. Met die strategie heb je ook nog het voordeel dat je de servo's achtereenvolgend bekrachtigd waardoor je niet een piekbelasting hebt op het moment dat alle servo's aan gaan in de PWM cycle.

Ik werk nu met deze chips omdat ik deze vond op een site waar ze een volledige hexapod bouwen (iets wat ik ook doe), en dat deze via gratis samples makkelijk en goedkoop te krijgen waren.

Ook heb ik een library (voor een mbed) bij de chips, echter heb ik geen aansluit schema van de chip -> mbed en vice versa.

Ook is de uitleg in de library wat aan de matige kant. Ik hoopte eigenlijk sneller stappen te maken, maar het lijkt erop dat ik alsnog met een osciloscoop aan de gang moet. Het handigst zou zijn als iemand al eens gewerkt heeft met een TLC5940, in combinatie met servo's (en het liefst ook nog in combinatie met een mbed). Echter op google vind ik hier geen spoor van. Ook ontbreekt ieder spoor van aansluit schema's. Kan wel genoeg vinden over deze chip in combinatie met een arduino, maar ik zou zelf het liefst werken met de mbed, omdat ik daar (van mijn vorige hexapod) nog werkende sensor schakelingen + software voor heb liggen).

(tot zover mijn beredenering over waarom te werken met de TLC5940, kort samen gevat, goedkoop, beschikbare library, makkelijk)

Ik sta er niet onwelwillend tegenover om voor een andere chip te gaan.(maar liever niet). mits ik deze vrij eenvoudig (zonder belachelijk hoge verzendkosten) in huis kan krijgen. Een alternatief zou dus de 74HC595 zijn, als ik het mij goed herinner is dit een shiftregister IC? heb deze volgensmij ooit eens toegepast in een ledcube.

Het liefst blijf ik uiteraard bij de TLC5940, dus mocht iemand mij kunnen laten zien hoe je deze aansluit. (ik wil ook best schema's bijvoegen hoe ik hem nu heb aangesloten), dan hoor ik dit graag.

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Zoals ik hierboven al aangeef: het is een sink. Je hebt een pull-up nodig.

Ik heb nu een pull-up van 3K eraan hangen, maar krijg het ic nog steeds niet aan de gang. Nog meer tips?

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

@Led-Maniak,

Ik heb jou schema erbij gepakt, en 1 wezenlijk verschil geconstateerd. Dit is de pull-up op de Blank pin. Deze pull-up ontbrak bij mij, en daardoor werkte mijn blank geinverteerd. Ik heb hem nu met een pull-up aangesloten. Nu werkt de chip naar behoren, en heb dan ook hardware technisch geen vragen meer.(Led maniak, en uiteraard ook de anderen, bedankt hiervoor).

Toch vraag ik me nog steeds af hoe ik bereken welk getal ik in het register moet schrijven om een bepaalde pulse length te behalen.

Is hier een standaard berekenening voor.

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).

Dat kan je inderdaad uitrekenen.

Als het goed is moet je PWM pulsen aan de TLC aanbieden. Doe je dit op 204.8kHz dan doet de TLC er 20ms over om 4096 stapjes te maken(je volledige bereik, 12-bits).

Wil je in die 20ms een pin voor 2ms hoog hebben en 18ms laag, dan bereken je het percentage dat hij hoog moet zijn: 2/20*100 = 10% hoog, 90% laag.

De rekensom wordt dan: aantijd/fullcycletijd * resolutie

2ms/20ms * 4096 = 409 pulsen hoog. Dat getal stuur je dan dus door naar de TLC.

bedankt voor je snelle respons.

Met deze informatie kan ik wat. Ga het vanavond meteen proberen :)

@ledManiak: you were spot on! oftewel, je had het bij het rechte eind, mijn berekeningen kloppen exact met de maximale uitslag van de servo motor.

Bedankt

(ps, er kan eventueel een slotje op dit bericht).

[Bericht gewijzigd door pinky-t op donderdag 31 oktober 2013 11:49:50 (51%)

Current project: "Bernaard the hexapod" (brother of alfred the hexapod).