PWM Arduino MEGA 2560

Gast #3552417
Lesenswert?

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
Gast #3552430
Lesenswert?

>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.
Gast #3552439
Lesenswert?

>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.
Gast #3552467
Lesenswert?

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
Gast #3552814
Lesenswert?

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
Gast #3553089
Lesenswert?

> 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
Gast #3553105
Lesenswert?

> 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?
Gast #3553125
Lesenswert?

> 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.
#3553134
Lesenswert?

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?
#3553169
Lesenswert?

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.
#3553188
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren