Hallo Community,
ich bin Anfänger was Programmieren angeht und wollte euch um Hilfe
bitten.
Mein Problem ist, ich möchte mit dem Arduino Board MEGA 2560 R3, ein
Tyristor über eine PWM als Schalter betreiben. Die Anforderung an das
Board ist, ein Rechtecksignal mit einer Frequenz von 2 MHz zu erzeugen
und einem duty cycle von 1%. Also mit anderen Worten, ich brauche ein
Signal welches bei 500ns, nur 5ns ein HIGH-Signal liefert. Kann mir
einer sagen, wie ich es realiesieren kann?
Gruß
Alex
>Also mit anderen Worten, ich brauche ein>Signal welches bei 500ns, nur 5ns ein HIGH-Signal liefert. Kann mir>einer sagen, wie ich es realiesieren kann?
Mit einem ATMega2560 kannst du sowas nicht erzeugen.
Bei 16MHz ist ein CPU Cycle schon 62.5ns lang.
Nimm einen FPGA.
Hi
Was willst du mit dem Thyristor schalten?
>ich brauche ein Signal welches bei 500ns, nur 5ns ein HIGH-Signal liefert.
Mit welcher Taktfrequenz läuft dein Arduino gleich noch mal?
MfG Spess
>Also mit anderen Worten, ich brauche ein>Signal welches bei 500ns, nur 5ns ein HIGH-Signal liefert.
Für welche schwachsinnige Anwendung du auch immer das brauchst,
ich glaube nicht das es einen Thyristor gibt der so schnell
schalten kann.
Hallo Holger,
danke für die schnelle Antwort.
Wäre es möglich, dass du mir kurz erläuterst, wie es mit einem FPGA
funktioniert? Wenn es dir keine Umstände bereitet.
Hi
>Zu Messzwecken wird eine LED über dem Tyristor geschaltet.>Die Taktfrequenz der CPU ist 16MHz
Mal von den anderen Einwenden abgesehen: Du kannst bei Gleichstrom einen
Thyristor nur ein- aber nicht ausschalten.
MfG Spess
@Alex_K: Sag mal was du genau vorhast eine LED mit 1% zu Betreiben
dürfte wohl kaum sichtbar und daher nutzlos sein. Einziger einsatzzweck
der mit einfällt IR-LED die mit einem sehr starken kurzem Impuls
betrieben wird.
Thomas O. schrieb:> Sag mal was du genau vorhast eine LED mit 1% zu Betreiben> dürfte wohl kaum sichtbar und daher nutzlos sein. Einziger einsatzzweck> der mit einfällt IR-LED die mit einem sehr starken kurzem Impuls> betrieben wird.
In Prinzip hast du es schon fast erraten, es handelt sich dabei nur um
ein UV-LED diese kann man gepulst mit einem Strom von 200 mA betreiben,
aber nur unter der Bestimmung mit einer Periode von 500ns und einem duty
cycle von 1%. Brauche daher einen Aufbau zur Intensitätsmessung, welcher
mir dieses PWM-Signal liefern kann. Wenn du eine Idee hast, wie ich
sowas am Besten verwirklichen kann, wäre es wirklich hilfreich.
Gruß
Alex
häng mal bitte das Datenblatt an. Ich vermute fürs Belichten wirst du
keinerlei Vorteile dadurch haben da sich das ja alles mittelt. Sowas
macht man bei einer IR-LED um die Reichweite zu steigern.
> häng mal bitte das Datenblatt an
So habe das Datenblatt drangehangen. Auf der Seite vier ist ein Diagramm
zu finden, welches ich mehr oder weniger nachmessen will.
Wieder zurück zum Anfang: Die maximale ImpulsBREITE ist 500ns,da darft
so einen 500ns Impuls mit DutyCyle 1% ausgeben (Periode 50µs).
Das ist mit einem 16MHz µC möglich.
> Vllt. kann man das Ganze mit ein paat Schnellen Logik ICs und einem 200> MHz Oszillator bauen...
Bin für alle Möglichkeiten bereit, muss nur die Voraussetzung erfühlen
und ein sauberes Rechteckimpuls hinbekommen, um genau Messungen
hinzubekommen.
> Wieder zurück zum Anfang: Die maximale ImpulsBREITE ist 500ns,da darft> so einen 500ns Impuls mit DutyCyle 1% ausgeben (Periode 50µs).> Das ist mit einem 16MHz µC möglich.
Aber ist die Impulsbreite 500ns nicht auch meine Periode? T=1/f oder
verstehe ich da was falsch
> Die Impulsbreite (maximum pulse width 500nSec) bleibt 500ns auch wenn> du das Datenblatt noch Einmal abhängst. Und mit Dutycycle 1% Darfst du> dein 500ns Impuls max. alle 50µs ausgeben.
Ich habe es so verstanden, dass ich eine Peridode von 500ns habe und das
ich dann nur ein Impuls von 5ns mit HIGH-Signal habe. Verstehe ich es
jetzt richtig, dass das duty cycle 1% meine 500ns sind und ich dann eine
Periode von 50us habe?
Alex_K schrieb:> Ich habe es so verstanden, dass ich eine Peridode von 500ns
Die schreiben nicht zum Spaß "pulse width" (Impulsbreite) im Datenblatt.
Alex_K schrieb:> Verstehe ich es> jetzt richtig, dass das duty cycle 1% meine 500ns sind und ich dann eine> Periode von 50us habe?
Dutycycle=Impulsbreite/Periode
==>Periode=Impulsbreite/Dutycycle = 0.5µs/0.01=50µs
> Dutycycle=Impulsbreite/Periode>> ==>Periode=Impulsbreite/Dutycycle = 0.5µs/0.01=50µs
Da habe ich es wohl falsch verstanden gehabt, dachte das die
Impuslbreite gleich meine Periode ist und ich davon ein HIGH-Signal von
1% generiere. Ok danke mein Fehler gewesen. Das bedeutet das ich mit
meinem Arduino Board nur eine Periode von 20kHz generieren muss.
Alex_K schrieb:> Da habe ich es wohl falsch verstanden gehabt, dachte das die> Impuslbreite gleich meine Periode ist
Was bitte ist an 'Pulsbreite' nicht zu verstehen?
Die Breite eines Pulses, vulgo Pulsbreite.
Ist doch von Sprachgebrauch her ziemlich eindeutig.
Was ist bei ...
1
+-------------+
2
| |
3
| | |
4
--+ +-----------------------+
5
6
<--- a ----->
7
<----------------- b --------------->
... der Puls? Ist das der Abschnitt a oder der Abschnitt b?
Was ist daher die Breite eines Pulses? Ist das die Zeitdauer von a oder
die Zeitdauer von b?
Max H. schrieb:> Karl Heinz schrieb:>> ... der Puls? Ist das der Abschnitt a oder der Abschnitt b?> Generation Arduino?
Immerhin kann er Prozentrechnung. Ist ja auch nicht selbstverständlich
heutzutage.
Und ich denk mir schon die ganze Zeit: Wozu braucht man (in unserem
Metier) 5ns lange Pulse? Das ist immerhin so kurz, dass ein Lichtstrahl
nur noch 1.5m lang ist. Und das soll dann auch noch möglichst exakt
sein. Da haben wir noch gar nicht darüber gesprochen, wie man bei dem
Tempo die 100mA überhaupt schaltet, denn da muss der Schalter schon
deutlich schneller sein, damit überhaupt ein annähernder Rechteckpuls
rauskommt und nicht irgendwas Flankenverschliffenes. Da muss man seine
Kapazitäten schon unter Kontrolle haben.
Karl Heinz schrieb:> Immerhin kann er Prozentrechnung. Ist ja auch nicht selbstverständlich> heutzutage.
Immerhin gibt es Menschen die Anstand haben. Ist ja auch nicht
selbsverständlich heutzutage.
Alex_K schrieb:>> Richtig.>> Ich danke dir vielmals!!!> Muss jetzt nur gucken wie ich das Programm mit dieser PWM hinbekomme.
Das war ein Mega2560, richtig?
Bei 16Mhz, ist ein Taktzyklus (1/16Mhz) genau 62.5ns oder 0.0625µs lang.
Um auf 0.5µs (=500ns) zu kommen, braucht man also 500/62.5 = 8
Taktzyklen. Das ist die Pulsbreite. Die 50µs sind dann, ausgedrückt in
Taktzyklen, 50/0.0625 = 800 Taktzyklen
Ergo:
zb Timer 1
Modus: Fast PWM mit einstellbarer Obergrenze. Da würde ich den Modus 14
nehmen (siehe Tabelle auf Seite 148 im Datenblatt).
Der Top Wert steht dann in ICR1 und ist 799
Prescaler auf 1
Die Pulsbreite wird zb in OCR1A eingestellt auf 8
Noch die COM Bits so eingestellt, dass die durch OCR1A erzeugte PWM
nicht invertiert am zugehörigen OC1A Pin ausgegeben wird.
Und dann sollte das soweit schon laufen.