Hoe het beste een puls maken

Hallo,

Voor trainings doeleindes op mn werk heb ik een puls nodig, Nouja eigenlijk 2 pulsen.

Ik heb namelijk een puls nodig die 325ns breed is 12v top met een freq. Van 200Hz.
(Afwijking mag denk ik wel iets van 10% zijn)

En dan een tweede puls die instelbaar gestart word tussen de 1 en 3 microseconden na de eerste gestart is met een breedte die ook instelbaar is tussen de 1 en 2 microseconden met een top van 350mV

Is dit te realiseren met bijv poortjes, 555, arduino en waar rekening mee te houden?

duck-tape does miracles...so do I

Een Arduino (ATMEGA328P) heeft een klokfrequentie van 16MHz, dus met hardware timers kun je pulsjes maken met een stapgrootte van 62.5ns. Die puls van 325ns zou dus 5 cycles lang worden, wat dus 312.5ns is. Voor een puls met een top van 12V heb je een buffer nodig; als de stroom die je nodig hebt heel klein is zou een weerstand en een transistor genoeg kunnen zijn, anders zou je een TC4426 of dergelijke MOSFET gate driver kunnen gebruiken.

Voor de tweede puls kun je de uitgang delen met een spanningsdeler, wederom als je maar weinig stroom nodig hebt. Als de stroom wel significant is, wordt het lastiger; ik ken geen driver die aan 350mV genoeg heeft.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Ooh ja dat is ook wel een puntje ja, het vermogen, het hoeft alleen weergeven te worden op een scoop.

duck-tape does miracles...so do I
benleentje

Golden Member

Het kan allebei met een aantal NE555's of met een arduino. Wat is jouw voorkeur? Pulsen maken met een arduino zou moeten kunnen met ca 1 week oefenen. De pulsen zelf kan je denk ik al na 1 avond ervoor gaan zitten het precies op tijd krijgen wat langer en eventueel inlezen van een 2 potmeters voor de instelling voor de 2de puls is ook goed te doen.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
buckfast_beekeeper

Golden Member

2de puls kan je ook nog digitaal gaan sturen met rotatie encoders.

Met een ATtiny op 20MHz is dat ook geen grote moeilijkheid.

Van Lambiek wordt goede geuze gemaakt.

Wat is de gewenste flanksteilheid e.d. ?

325 ns is grofweg > 3 MHz, een nog vrij standaard snelle 555 zoals de TLC555 (2 MHz) gaat dat niet halen.
Een en ander wijst wat mij betreft in de richting van een snelle (> 60 MHz) microcontroller. Voor de ene puls zal een versterker met voldoende bandbreedte nodig zijn, voor de andere volstaat een verzwakker.

Transmissielijnen en terminatie lijken mij overigens wel een aanrader, anders toont het waarschijnlijk rommelig op de scope. Of het mòet is een tweede.

Shiptronic

Overleden

Op 1 juli 2020 16:30:54 schreef Peter R.:

Ik heb namelijk een puls nodig die 325ns breed is 12v top met een freq. Van 200Hz.

Kan je uitleggen wat je hier mee bedoeld? een puls van 200 Hz?

Wie de vraag stelt, zal met het antwoord moeten leren leven.
benleentje

Golden Member

een puls van 200 Hz?

Dat is niet wat TS zegt. Het staar er toch goed puls van 325nS en 200Hz. De 200Hz is de herhalingsfrequentie. Wat dan weer dubbelop is want een periodetijd dus frequentie duid altijd op herhaling.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Shiptronic

Overleden

Dan is het bij mij geen puls :) (eenmalig) , maar ik begrijp nu de intentie (PWM/Duty-cycle)

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Een duty cycle van 0,0065% voelt voor mij als een puls. - Maar het is hetzelfde, uiteraard.

Ha Peter R. ,

Ik heb een schetsje gemaakt getallen zijn duidelijk maar of beide pulsen uit 1 uitgang moeten komen :?

Nu ligt het aan de eigenschappen van de onderlingen relatie tussen de pulsen.
Als het qua timing niet zo krap kom valt het wel mee 10 % geef je aan als marge maar welke marge is dit ?
De pulsen onderling of de plaats in het tijd frame !!

Groet,
Henk.

Everything should be as simple as possible, but not simpler.
Frederick E. Terman

Honourable Member

Op 1 juli 2020 20:11:27 schreef Shiptronic:
Dan is het bij mij geen puls :) (eenmalig)

Dat is grappig, want de essentie van een 'pulse' (letterlijk: polsslag) is juist de herhaling. Denk ook aan pulseren (regelmatig kloppen), en aan dingen als pulscodemodulatie, pulsbreedtesturing, muziek met een sterke puls (zeer ritmisch), etc.
Misschien denk je aan een impuls.

Keramisch, kalibratie, parasitair: woordenlijst.org

Hallo,

Dank voor de reacties,

@ship

Ja oké het net hoe je het interpreteert, het een puls die herhaald word.

@lambiek

Grappige samenvatting van de 555

@F.E.T

Inderdaad, ik houd zal maar zeggen ook een voorbeeld een radar aan:PRF

@andere

Zal proberen een iets wat diepere uitleg te geven.

Uitgang 1: een puls die 12v top is, met een breedte van 325ns die elke 5ms herhaald word.

Uitgang 2: een puls die gestart word tussen de 1 en 3 microseconden (instelbaar) nadat de eerste gestart is met een breedte die ook instelbaar is tussen de 1 en 2 microseconden met een top van 350mV met de zelfde freq.

En dit alles zou alleen weergeven worden op een scope.

Het is namelijk de bedoeling dat leerlingen wegwijs gemaakt worden met bepaalde procedures en omgang meet apparatuur ipv direct op systemen die in gebruik zijn.

Vandaar dat ik een marge van 10% aanhoud.

duck-tape does miracles...so do I

Maar moet het dan perse 12V zijn? Met een Arduino kun je triviaal een pulsje van 5V maken, en lager kan met een spanningsdeler, maar die 12V maakt het lastiger, daarvoor heb je weer een extra voeding nodig, een buffertje, die moet op een printje, ontkoppel condensator erbij, etc., en een serieweerstand lijkt me ook handig, want er gaat natuurlijk kortsluiting gemaakt worden.

Waarom wil je het instelbaar hebben, en hoe wil je dat instellen doen? Is het genoeg als je die instellingen bij het laden van de software moet invullen? Op die manier kun je verschillende Arduinos hebben met verschillende instellingen, en met de weerstanden kun je de uitgangsspanningen ook nog varieren, zodat ze niet bij elkaar af kunnen kijken.

Als het voor een practicum is dat je wilt kunnen controleren, lijkt het me niet essentieel dat je het nauwkeurig kunt instellen, zolang jij maar weet wat de werkelijke getallen zijn. Je kunt dan ook een schakeling maken van een paar comparators met een handjevol weerstanden en condensators, en éénmalig zelf meten wat de tijden en spanningen zijn.

Het klinkt allemaal een beetje raar als practicum opdracht, zeker met die seer specifieke getallen en zo.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Shiptronic

Overleden

Op 1 juli 2020 21:16:39 schreef Frederick E. Terman:
[...]Dat is grappig, want de essentie van een 'pulse' (letterlijk: polsslag) is juist de herhaling. Denk ook aan pulseren (regelmatig kloppen), en aan dingen als pulscodemodulatie, pulsbreedtesturing, muziek met een sterke puls (zeer ritmisch), etc.
Misschien denk je aan een impuls.

Jullie hebben gelijk, ik denk te veel in one shot.

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Op 1 juli 2020 21:16:39 schreef Frederick E. Terman:
[...]Dat is grappig, want de essentie van een 'pulse' (letterlijk: polsslag) is juist de herhaling. Denk ook aan pulseren (regelmatig kloppen), en aan dingen als pulscodemodulatie, pulsbreedtesturing, muziek met een sterke puls (zeer ritmisch), etc.
Misschien denk je aan een impuls.

Het Engelse pulse is echter niet hetzelfde in betekenis as het Nederlandse puls. Puls in het nederlands heeft ook de betekenis 'stoot', waarmee je weer heel dicht bij impuls komt.

Uiteindelijk is het belangrijk alle details te specificieren:
Een puls met pulslengte 325ns, amplitude 12V, herhalingsfrequentie 200Hz. Stijg en daal-tijd ontbreken nog. Belasting 1MOhm/15pf (standaard scope-probe).

Arduino op 16MHz kan wel, maar kost wat moeite: 325ns is 5,2 klokperioden dus komt net niet uit (je puls wordt 312,5 of 375 ns), alhoewel je buffer naar 12V waarschijnlijk genoeg vervorming bied om dat recht te trekken.

Tweede detail is dat de meest straight-forward oplossing (een 16 bit timer in PWM mode) niet werkt omdat 16MHz/216 244Hz geeft. M.a.w. je haalt de 200Hz niet zonder prescaling, maar met prescaling kun je geen pulsbreedte van 5 klokken maken.

Dus je moet iets maken met een interrupt die door de timer elke 5ms wordt aangeroepen, en dan met wat assembly een puls maakt van precies 5 klokken.

En dan een tweede timer die 1-3us later afgaat, en de tweede puls maakt. Dat kan dan waarschijnlijk wel met een simpele 8 bit timer, aangenomen dat die tijden niet op 100ns nauwkeurig hoeven te zijn.

Al met al kun je daar wel een paar avonden mee zoet zijn als arduino-beginner.

Die 12V generen vereist dan ook nog een leuke buffer; als je een beetje redelijke stijg en daaltijden wil hebben (bijv 10ns) heb je toch al snel een 100MHz buffer nodig, die bovendien zover in spanning kan. Een 24V voeding kan dan helpen, dan houd je versterker headroom over.

Als de pulsvorm niet belangrijk is:
Laat de arduino gewoon een 200Hz blok maken (dus 2.5ms hoog, 2.5ms laag) en koppen die met een RC hoogdoorlaat filter aan een tor die de 12V schakelt.
Voeg een diode toe om alleen bij de opgaande flank van de blok te reageren. Tune de pulse-lengte met de C.

Arco

Special Member

Waardes bij benadering...

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

Op 1 juli 2020 21:37:47 schreef SparkyGSX:
Maar moet het dan perse 12V zijn? .....
en een serieweerstand lijkt me ook handig, want er gaat natuurlijk kortsluiting gemaakt worden.

Waarom wil je het instelbaar hebben, en hoe wil je dat instellen doen? Is het genoeg als je die instellingen

Als het voor een practicum is dat je wilt kunnen controleren, lijkt het me niet essentieel dat je het nauwkeurig kunt instellen, zolang jij maar weet wat de werkelijke getallen zijn.

Het klinkt allemaal een beetje raar als practicum opdracht, zeker met die seer specifieke getallen en zo.

Deze eisen van waardes heb ik overgenomen van het systeem wat deze genereerd. dus ja 12v.

en kortsluiting? als het goed is niet haha word alleen op de scope aangesloten en qua leeftijd/gedrag mag ik hopen van dat +/- 40 jaar wel een dusdanige leeftijd is om niet zomaar bnc bussen kort te sluiten :P

Het instelbaar maken is er juist voor dat mensen de procedure goed volgen en de timing kunnen instellen.
Deze af lezen van de scope en daarbij evt een computer programma die zegt dat de timing goed is of niet.

oke arduino zal hem dan even niet worden, ik had het ook maar even als voorbeeld genoemd :)

zelf had ik ook al een beetje zitten spelen met een 555 (200Hz clock/blok) 7404 en 7408 echter kreeg ik die niet stabiel en/of een mooie wat op een puls moet lijken eruit.

@arco

Is dit parate kennis of heb je iets van simulatie/berekenings programma?

duck-tape does miracles...so do I

Die schudt 'ie zo uit z'n mouw. Ik sta telkens weer versteld van z'n oplossingen zónder microcontrollers.

En kijk eens naar het tijdstip van z'n post... :)

Vervangen DOOR.

.. Maar ik vraag mij af of het zou werken. De 40106 kan maar een paar mA leveren en heeft 100 ns transitie tijd, dat lijkt vrij sloom bij een puls van 325 ns.

Ik ga met Shiptronic mee, puls is enkelvoud pulsen meervoud en pulstrein bv impliciete meervoud.

Ik kon het niet laten en ben even in Arduino bezig geweest.

c code:


#define NOP __asm__("nop\n\t") // asm Nop instructie, duurt 65,2 ns op 16 MHz

void setup() {
  pinMode(2, OUTPUT); 
  // Pin 2 is bit 1 van poort D op de Pro Micro (Atmega 32U4)
}

/*
void loop() { // Geeft 141,2 kHz
  digitalWrite(2, HIGH); 
  digitalWrite(2, LOW); 
}
*/ 

/*
void loop() { // Geeft 1977 kHz met 100 ns hoog. 
  PORTD |= (1<<1); // Pin 2 is bit 1 van poort D
  PORTD &= (0<<1);
}
*/

void loop() { // Geeft 200 Hz met 300 ns hoog. Niet meer goed te zien op de analoge scope. 
  PORTD |= (1<<1); // Arduino pin 2 is bit 1 van poort D
  NOP;
  NOP;
  NOP;
  PORTD &= (0<<1);
  delay(5); 
}

Op een wat snellere chip moeten de precieze wensen vrij comfortabel te halen zijn, maar op b.v. de ESP ben ik niet bekend met het direct schrijven naar registers.
In de lange 5 ms pauze is er veel tijd om potmeters in te lezen etc. In het gebruik van timers voor de snelle pulsen zie ik niet zo veel voordeel.

Scope plaatje van de 100 ns pulsjes. Bovenste trace 100 ns/ , onderste 20 ns/ Dit is met een 1:10 probe op 1:1, zonder terminatie e.d. Oogt beschaafd, iets van 20 ns stijgtijd.

Een snelle versterker naar 12V is een ander onderwerp. Ik denk dat ik naar een discrete schakeling zou neigen, maar dat is ook uit onbekendheid met moderne ic's op dit gebied.
20 ns gaat zo richting de 25 MHz .. ?

[edit] De 100 ns pulsjes drukken hier op een paar meter afstand de FM radio volledig weg :+ niet helemaal EMC zo vermoed ik.. 200 Hz is dan inderdaad een goed idee, dan gebeurd het niet, maar ik zou het ook netjes dicht opbouwen.

Ja Aart, die arduino z'n flanken zijn niet zo steil. Maar als je er een snelle comparator achter plaatst met 12V voeding moet je er wel kunnen komen.

@Arco: ik zou D2 een serieweerstandje geven om de uitgang van IC1B niet te zwaar te mishandelen, C4 een serieweerstandje en R4 een anti-parallelle diode zodat de ingang van IC1D niet te hard negatief gaat.

Eventueel zou D3 vervangen kunnen worden door een weerstand als de uitgang niet belast wordt, maar de TS de uitgangsspanning wel wil kunnen instellen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken