Forum: Mikrocontroller und Digitale Elektronik PWM Arduino MEGA 2560


von Alex_K (Gast)


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

von holger (Gast)


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.

von spess53 (Gast)


Lesenswert?

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

von holger (Gast)


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.

von Alex_K (Gast)


Lesenswert?

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.

von Alex_K (Gast)


Lesenswert?

Hallo Spess53

Zu Messzwecken wird eine LED über dem Tyristor geschaltet.
Die Taktfrequenz der CPU ist 16MHz

MfG
Alex

von spess53 (Gast)


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

von Alex_K (Gast)


Lesenswert?

Sorry meinte eigentlich einen Transistor und keinen Thyristor

von Max H. (hartl192)


Lesenswert?

Alex_K schrieb:
> Die Taktfrequenz der CPU ist 16MHz
Das ist um den Faktor 12.5 zu wenig. Du braust eine CPU mit 200MHz

von Eumel (Gast)


Lesenswert?

Max H. schrieb:
> Das ist um den Faktor 12.5 zu wenig. Du braust eine CPU mit 200MHz

Die dann auch entsprechend schnell an den Pins wackeln kann.

von Alex_K (Gast)


Lesenswert?

@ Max H.

Vielen Dank,

für deine Antwort.

von Thomas (kosmos)


Lesenswert?

@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.

von Alex_K (Gast)


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

von Thomas (kosmos)


Lesenswert?

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.

von Max H. (hartl192)


Lesenswert?

Vllt. kann man das Ganze mit ein paat Schnellen Logik ICs und einem 200 
MHz Oszillator bauen...

: Bearbeitet durch User
von Alex_K (Gast)



Lesenswert?

> 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.

von Max H. (hartl192)


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.

von Alex_K (Gast)



Lesenswert?

> 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.

von Alex_K (Gast)


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

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Alex_K schrieb:
> oder verstehe ich da was falsch
Ja

Nicht ein Meisterwerk in Paint, aber es sollte alles gut erklären.

: Bearbeitet durch User
von Alex_K (Gast)


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?

von Max H. (hartl192)


Lesenswert?

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

: Bearbeitet durch User
von Alex_K (Gast)


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.

von Max H. (hartl192)


Lesenswert?

Alex_K schrieb:
> Das bedeutet das ich mit
> meinem Arduino Board nur eine Periode von 20kHz generieren muss
Richtig.

von Karl H. (kbuchegg)


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?

: Bearbeitet durch User
von Alex_K (Gast)


Lesenswert?

> Richtig.

Ich danke dir vielmals!!!
Muss jetzt nur gucken wie ich das Programm mit dieser PWM hinbekomme.

Gruß
Alex

von Alex_K (Gast)


Lesenswert?

> Was ist daher die Breite eines Pulses? Ist das die Zeitdauer von a oder
> die Zeitdauer von b?

Da hatte ich einen falschen Gedanken gehabt.

von Max H. (hartl192)


Lesenswert?

Karl Heinz schrieb:
> ... der Puls? Ist das der Abschnitt a oder der Abschnitt b?
Generation Arduino?

von Alex_K (Gast)


Lesenswert?

> Generation Arduino?

Arduino MEGA 2560 R3

von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Alex_K (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Alex_K (Gast)


Lesenswert?

> Das war ein Mega2560, richtig?

Vielen Dank für die Hilfe!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.