Aansturen laserdiode met SPI bus

Een propagation delay kan geen kwaad. Het probleem zit hem in het verschil in p.d. tussen in en uitschakelen. daarmee rek je de aan-tijd op of verkort je die. dat wil ik wel graag voorkomen.
Bij die IR2184 die ik als voorbeeld gebruikte wordt de aan-puls 400ns korter dan de input-puls

Ik zal eens naar die TC kijken.
Delay voor on en off van een TC4427 zijn gelijk. Dan verschuift de pulstrein iets in tijd, geen probleem. Mooi ding die TC4427.

De beste fet die ik tot nog toe heb gevonden is een IRLML0100TRPbF. Mooie strakke schakeltijden bij 300mA, maar nog steeds prut bij 30 mA.

reading can seriously damage your ignorance
blackdog

Golden Member

Hi Hennep,

Wat gaat die Fet schakelen?
Met een extra negatieve voorspanning kan je b.v. 1 a 2 J310 (HF Fets) gebruiken om de 30mA te halen.

Verder kan je ook eens kijken naar dit kleine IC van Nexperia: 74LV1T125
Misschien is dat bruikbaar voor je.

Groet,
Bram

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Arco

Special Member

Als je 30mA uit de SPI bus wilt halen, ben je wel iets heel lelijks aan het doen... (wat is het nut daarvan?)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 20 juni 2019 18:29:59 schreef blackdog:
Wat gaat die Fet schakelen?

Ik wil een laser diode aansluiten op de SPI bus van een STM32 controller.
De maximum SPI clock is volgens de datasheet 18 MHz dus pulsen van 55 ns.

Het is lastig om een fet/driver te vinden die met 3.3 logic werkt en ook nog eens zo snel kan schakelen.

[Bericht gewijzigd door hennep op donderdag 20 juni 2019 18:43:06 (16%)

reading can seriously damage your ignorance

Op 20 juni 2019 16:46:54 schreef hennep:
voorbeeld IR2184:
Turn-on propagation delay - 680ns
Turn-off propagation delay - 270ns

Dat is omdat dit ding bewust gemaakt is dat je tegelijk de ene ON en de andere OFF kan sturen, en dat de dead-time dan door het driver-IC gemaakt wordt.

De counter/pwm modules van de STM hebben echter dead-time-insertion, dus dan hoef/wil je het niet in je driver hebben. En omdat je het zo in software kan instellen gaan dit soort drivers uit de mode en worden tegenwoordig meer drivers gemaakt die gewoon symmetrisch zijn.

Op 20 juni 2019 18:03:52 schreef hennep:
De beste fet die ik tot nog toe heb gevonden is een IRLML0100TRPbF. Mooie strakke schakeltijden bij 300mA, maar nog steeds prut bij 30 mA.

Waar haal je vandaan dat ie prut zou zijn bij 30mA?

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

Op 20 juni 2019 18:44:51 schreef rew:
Waar haal je vandaan dat ie prut zou zijn bij 30mA?

Ik heb het spice model gedownload bij de fabrikant en met verschillende stromen geschakeld in de simulator. Bij 30 mA duurt uitschakelen bijna 40 ns langer dan inschakelen. Ik neem aan dat het dan in de werkelijke schakeling niet beter wordt.
Boven de 300mA schakelt de fet volgens specificaties.

@ Arco hieronder, Het gaat niet om een extender

reading can seriously damage your ignorance
Arco

Special Member

Waarom zou je een laser aan de SPI bus hangen? Probeer je een soort SPI extender met lasers te maken?
Daar zijn betere manieren voor: http://www.ti.com/lit/an/slyt441/slyt441.pdf

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
fatbeard

Honourable Member

Tsja... Laserlicht isoleert wel goed...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Op 20 juni 2019 18:50:29 schreef hennep:
@ Arco hieronder, Het gaat niet om een extender

Dus we kunnen blijven gokken wat je probeert te maken? JIj vraagt naar een geschikte mosfet voor jou applicatie en wij kunnen derhalve niet beter doen dan blijven gokken naar geschikte mosfets voor jou. Ik wens de rest plezier bij het gokken en jou succes met je projectje.

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

Wat ik probeer te maken doet er niet zo heel veel toe maar het is zoiets als wat "der Peter" in deze video doet: https://youtu.be/fi4P-Bwc6g8?t=291

Ik ben al lang bezig met het reverse engineeren van de laserunit van een HP Laserjet III printer, Mijn eerste post op dit forum was van 18 december 2018. Ik werk er alleen op de dinsdagavond aan samen met iemand anders, dus het zal ook nog wel even duren voor het af is. Een aantal deelprojecten hebben we al afgerond, zie:
https://www.circuitsonline.net/forum/view/143619
https://www.circuitsonline.net/forum/view/143431
https://www.circuitsonline.net/forum/view/144676

De motor draait redelijk stabiel op 5V met de driver die op de HP print zit. In de laserprinter was dat 22V. Ik heb de Mitsubishi BLDC driver werkend gekregen met de gegevens uit de datasheet van een iets ander type, en heel voorzichtig proberen. de snelheid die de motor uiteindelijk gaat draaien is ook afhankelijk van de resolutie van de SPI gestuurde laserdiode.
De logic laat zich aansturen met 3.3V en ik weet niet zeker wat dat in de HP schakeling was. Mogelijk was het 5V.
Met de stappenmotor en de verbonden vertragingskast van een flatbedscanner kan ik 50um stappen maken als ik microstepping toe pas. Daarmee verschuif ik de printplaat.
Omdat ik de M66515FP laserdriver van de HP niet kan gebruiken ben ik dus naar andere mogelijkheden aan het zoeken. De laserdiode in de HP was een IR type van meer dan 150mW. Die heb ik er gelijk uitgegooid omdat ik geen risico wilde lopen. Als ik een violet of rode laser aansluit op deze driver, dan gaat de laser niet uit (bij geen aansturing). Modulatie laat zich niet zien als "aan/uit" signaal maar "aan/beetje aan". De bias stroom instelling van de driver wordt niet gebruikt, ik neem dus aan dat de biasstroom 0 is. Meten aan deze driver is lastig. Als de oscilloscoop probe op een aantal van de pennen wordt gezet, gaat de laser uit. Ik heb het ding dus opgegeven en wil nu zelf wat proberen. Vandaar mijn vraag: hoe vind ik een snelle mosfet.
Het beste wat ik tot nu toe heb gevonden is nog steeds de IRLML0100 dus daar gaan we dan eens mee testen aankomende dinsdag.

reading can seriously damage your ignorance
Arco

Special Member

Wat ik er nu van begrijp is dat het dus geen gewone laser is, maar met 'iets' ingebouwd wat op SPI werkt?
In dat geval heeft de laser gewoon zijn eigen voeding, en is de SPI een gewone SPI, daar hoeft niks van mosfets tussen.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Bijna goed Arco,
Het is een gewone "Sony 405nm 120mW TO18 5.6mm Laser Diode". Was het maar zo'n feest dat ik er direct een SPI signaal op kon zetten :-)
Ik wil hem met de SPI bus van de stm32 aansturen omdat ik dan synchroon op de clock van de SPI bus data kan versturen, veel sneller en stabieler dan bit-bangen.
Dus ik heb echt een aanpassing nodig die SPI data op de laser zet.

reading can seriously damage your ignorance

Het is mischhien een beetje open deur, maar je hebt high speed open drain drivers.
Die doen makkelijk laten we zeggen 30 of 40 mA, en hebben zeer snelle rijs tijden.
https://www.st.com/resource/en/datasheet/cd00002706.pdf
Deze heeft 4 ns maar ik weet dat er snellere zijn, ik heb op mijn werk een met 700 ps gemeten, maar daar kom ik Maandag pas weer.
Dan kan ik je een partnumber sturen.

"Stupidity is also a gift of God, but one mustn't misuse it." - Pope John Paul II

Hehe! eindelijk de "kader-info", zodat we weten waar het over gaat: Een laser van ongeveer 30mA moet snel aan-en-uit gestuurd worden, Om het patroon aan te leveren wordt een SPI module van een STM32 misbruikt om de data te serializeren. Het is geen SPI laser of zoiets, dat heeft er niets mee te maken.

Het langzaam zijn van mosfets bij uitschakelen komt volgens mij doordat de belasting-stroom condensatortjes moet gaan op en afladen. Dus je moet een mosfet vinden die weinig parasitaire capaciteit heeft en mogelijk wil je een push-pull aansturing maken om de boel aan te sturen. Dus: Bouw een inverter met twee (ongeveer complementaire) mosfets.

Overweeg: Neem een 74HCT245. Die doet 10 of 20mA op iedere uitgang, hang een zwik ingangen aan mekaar en ook de uitgangen. Krijg je voldoende aansturing voor die 30mA. Ik zeg "HCT" omdat die een 1.8V threshold heeft, dicht genoeg bij de 1.65 van de 3.3V logica. En dan kan je de HCT dus gewoon met 5V voeden.

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

Special Member

Je kunt een single pin driver als de UCC27519 nemen, kan 4A leveren...
Heeft inderdaad niets met SPI te maken... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Een paar hct TTL poorten heb ik vast nog wel ergens liggen. Man dat is lang geleden dat ik daar wat mee heb gedaan, eind jaren 80 of zo.
"Een zwik ingangen aan elkaar", er staat me vaag iets bij dat ik dan naar fan-in, fan-out moest kijken. Ik neem aan dat STM geen fan-out heeft opgegeven voor de SPI data uitgang. :-)
Ik overweeg dan om een viertal poorten parallel te zetten met een BF256C erachter voor de stroombegrenzing. Dat setje 2x parallel en ik zit op een stroompje van ca. 27mA.
Ik vraag me alleen af of de spanning van 5.5V (max. voor TTL) voldoende is voor de goede werking van de stroombron. De laser vraagt iets meer dan 3V.
Zou ik dan niet beter de opendrain uitvoering van een TTL chip kunnen gebruiken, die kunnen 15V op de drain verdragen.

EDIT: @Arco
Ik ben huiverig geworden om componenten die heel veel stroom verdragen te gebruiken voor een paar mA. Maar ik zal er eens naar kijken.

reading can seriously damage your ignorance

Je vraagt naar geschikte onderdelen en als er wat komt moet het ineens met wat je hebt liggen. Ik hou niet van ouderwetse mosfets als stroombron gebruiken. Of het dynamisch gedrag is wat je wilt weet ik niet. Vanuit hct kan je een 7V hc driver sturen.

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

Special Member

Ik ben huiverig geworden om componenten die heel veel stroom verdragen te gebruiken voor een paar mA.

Tja, daar vroeg je toch om? (mosfets kunnen nu eenmaal meestal fink wat stroom aan)
Voordeel van die UCC is dat het een totem-pole driver is, en geen losse sink of source. (komt de schakelsnelheid ten goede)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

De oorzaak van het langzamer afschakelen van een mosfet bij lage stroom komt doordat de belasting-stroom een parasitaire condensator moet opladen voordat de uitgang (drain) hoog wordt.

De overgang kan je dus versnellen door een grotere stroom te regelen. En dat kan bijvoorbeeld door een andere fet complementair aan te sturen.

Wat je dan overhoud is een totempole driver of inverter circuit. Niet of van je kan kiezen wat je krijgt, nee, of als in je kan het zus of zo noemen.

Gegeven het complete probleem: JIJ denkt een stroombrom circuit te maken door twee oude torren parallel te zetten zodat die ieder een bepaalde stroom leveren. Als je de stroom wilt aanpassen heb je de keuze uit: andere torren of ander aantal parallel. Ik blijf het een vage constructie vinden. Met 3V over de laser diode zou ik zeggen: Met minder dan 100mV over de mosfet en een stabiele 5V, zet een weerstand in serie met de diode om de stroom te regelen. Dan kan je een andere weestand kiezen als je een andere stroom wilt instellen en van een weerstand weet ik het dynamische gedrag: reageert snel.

Andere optie: Maak een stroombron met een bipolaire tor. reken 1V voor de tor, 1V voor de weerstand en de emitter moet op 1.0V komen de basis op 1.6V. Die maak je vanuit je signaal met een spanningsdeler die op 1.65V uitkomt (1k+1k). Hopelijk is dit "snel" omdat de tor niet in verzadiging gaat.

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

Vanavond het bijgevoegde schema uitgewerkt en de laser geeft een projectie waarmee ik iets kan.
Toch maar geen mosfet gebruikt en dat zie je terug in de spanning die nodig is om de led te laten branden. Ik heb minimaal 6V nodig om de laserdiode te laten oplichten.
Op de foto zie je een aantal korte lijnen van 200us aansturing (en pauzes van 200us) en ergens in het midden een klein puntje, een puls van 5us.
Er zit weer schot in dit project.

reading can seriously damage your ignorance

Een paar weken geleden heb ik de hardware van dit project weer eens opgepakt.
Waar ik nu tegenaan loop is het focussen van de laser. De lasermodule van de HP-Laserjet III zit stevig op een aluminium frame gemonteerd en ik kan met een paar bouten in sleufgaten de module verschuiven en zo de streep licht redelijk scherp stellen, redelijk, niet optimaal. Als ik de streep aan de beide uiteinden scherp heb gesteld dan is die in het midden erg wazig. De optica in dit ding werkte goed in de laserprinter. Het is me nooit opgevallen dat laserprints midden op het papier wazig waren. Het enige dat ik kan bedenken is dat de optica is gemaakt voor infrarood en ik zit nu precies aan de andere kant van het spectrum bij 405nm. Mijn laatste ervarig met optica is het spelen met prisma's met een lichtspleet bij de natuurkundeles op de middelbare school geweest. Mijn kennis laat het hier dus afweten.
Heeft iemand een idee hoe ik dit kan oplossen?

Het is lastig om dit gedrag met een foto of video vast te leggen. De streep in deze video is sterk overbelicht.
Wat je in de video ziet is de SPI bus op 16MHz die de draaiende laser aanstuurt. De data is zichtbaar in blokken van 10 bytes aan en 10 bytes uit, totale lengte ongeveer 180mm. Aan het begin van de streep 5 bytes per blok. De buffer is 1200 bytes lang. De laser gaat daarna aan om de sensor te belichten voor het begin van de volgende streep. Ik ben tevreden met de stabiliteit van het patroon maar als ik dit niet scherp kan stellen dan is het hele project mislukt, of moet ik mezelf tevreden stellen door lage resolutie PCB's af te drukken.

Deze foto is gemaakt met 18MHz SPI, 2048bytes, dus ongeveer 16k aan pixels. De maximale breedte van de module is hiermee bijna benut.

Heeft iemand een tip hoe ik de laser zo goed mogelijk afgesteld krijg? (qua scherpte)

EDIT: Net even in Binas gekeken. De brekingsindex van perspex is 1.49 voor rood licht en 1.50 voor violet. Ultraviolet en infrarood zitten nog heel iets verder uit elkaar, dat kan net het verschil betekenen.

reading can seriously damage your ignorance

Een boel ellende de afgelopen weken. Dit is hobby en zou leuk moeten zijn. :-)
Omdat de laser op vol vermogen alles overstraalt heb ik de bias instelling van de stroombron aangepast om het scherpstellen te kunnen doen met de laser "uit". Bij het meten aan een connector is er toen, door uitschieten met de multimeterpen, heel even 7V op een i/o pen gekomen. Het knetterde even en de bekende electronische lucht onsnapte uit de chip. Even voelen of chip heet is! Die energie was nog niet ontsnapt en ik mocht met de vinger onder de kraan. Weer wat geleerd.
Echter een nieuw controllerbordje deed het niet nadat ik dezelfde code er in had geschoten. Alles nagemeten en een tijd op de code zitten staren en bijna het punt bereikt dat ik het in de hoek zou smijten.
Uiteindelijk kwam ik er achter dat er een verkeerde waarde uit eeprom werd gelezen, 0xFFFF ipv. een veeeeel kleinere waarde. Omdat dit de linkermarge vertegenwoordigt, om het geprojecteerde patroon iets in plaats bij te kunnen stellen, werd er buiten de buffer geschreven. De code is aangepast en de usb seriele poort wordt weer herkend.

Ik overweeg nu om een checksum op de eeprom te zetten en bij een ongeldige waarde terug naar "fabrieksinstellingen" te forceren. Is dat een goed idee of doen jullie zoiets anders?

reading can seriously damage your ignorance

Op 21 augustus 2020 15:57:46 schreef hennep:
Heeft iemand een idee hoe ik dit kan oplossen?

Grappig genoeg heb ik ook met zo een idee gespeeld van LDI (laser direct imaging) voor PCB productie. Toen heb ik een keer bij oshpark besteld en nooit meer een PCB gemaakt.

Is het niet een idee om de hele lens eruit te halen en dan mogelijke verschillen in de dot size (links en rechts zal je een spot/lijn looptijd langer zijn dan midden) via software of de ingevoerde data te compenseren?

Leuk project trouwens!

A byte walks into a bar and orders a pint. Bartender asks him "What's wrong?" Byte says "Parity error." Bartender nods and says "Yeah, I thought you looked a bit off."

Ik zie in die streep op de foto hierboven niet veel afwijking in de lengte van de blokken (5 bytes/ 40 pixels aan en evenveel uit). Zodra ik van die overbelichting af ben zal ik een betere foto plaatsen. Maar dat is een afwijking die ik inderdaad in software kan compenseren.
Ik heb op dit moment een lens voor een 405nm in bestelling. Daarmee zou ik de convergerende bundel van de laser al voordat het de spiegel passeert kunnen corrigeren. De lens die daar nu zit is voor infrarood.

reading can seriously damage your ignorance