mikrocontroller stroboskop

Fragen zu Schaltungen, Elektronik, Elektrik usw.

Moderator: T.Hoffmann

Antworten
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

Sa, 20.01.07, 18:55

hallo ich wollte mir mit einem mikrocontroller ein LED stroboskop programmieren nach dem das mit dem ne555 nicht so gut geklappt hat

die voraussetzungen an die Software sind
im laufenden betrieb einstellbare Frequenz ohne das sich das an aus verhältnis ändert
das Gänze soll ein möglichst großen Bereich abdecken von 1Hz - je mehr je besser wen das die Sache einfacher macht würde ich mich mit 254Hz zufrieden geben

jetzt zum an aus verhältnis
das sollte auch Steuer bar Sein am besten natürlich auch über Taster in einem Bereich von 1:1 bis 100:1
mit den zahlen bin ich noch etwas flexibel aber was wichtig ist die frequenz darf sich nicht ändern wen ich das ein aus verhältnis einstelle


bis jetzt habe ich versucht ein paar pwm Programme zu ändern aber habe es nicht hinbekommen das sich die Frequenz nicht änder wen ich das ein aus verhältnis einstelle

als ich hoffe das mir jemand der sich sich etwas länger mit mikrocontrollern beschäftigt helfen kann

ich bin auch für andere Lösungen offen :wink:
Benutzeravatar
Fightclub
Post-Hero
Post-Hero
Beiträge: 5114
Registriert: Mi, 01.03.06, 18:40

Sa, 20.01.07, 19:02

hm wieso soll sich denn die frequenz ändern wenn du ein-aus änderst? wenn du zwei variablen hast ziehst du von der anderen 1 ab und tust auf die andre 1 drauf ;) damit bleibt die frequenz immer gleich :P
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

Sa, 20.01.07, 19:11

das problem ist ein zyklus ist die off time zb. 0.8 + die on time zb. 0.2
das ist dann 1Hz

wen ich aber jetzt die on time auf 0.5 mach habe ich über 1Hz

ich weiß eineiige werde jetzt denken wie blöd hat der das den gemacht:
aber ich kanns noch nicht besser :oops:
Benutzeravatar
Jay
Hyper-User
Hyper-User
Beiträge: 1096
Registriert: Mo, 08.05.06, 07:54
Wohnort: Österreich

Sa, 20.01.07, 19:22

Neo kannst du das Programm posten damit man etwas sehen kann?

ich weiß nicht ob das was bringt, aber vllt hab ich eine idee
die programmier-sprache/microcontroller muss eine rechen aufgabe rechnen können dan geht das bestimmt

MfG
Jay
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

Sa, 20.01.07, 20:13

ne hab ich garnicht mehr
ich hatte auch noch nichts konkretes gebaut

ich hab nur mit diesem Code rum Experimenthier

Code: Alles auswählen

$regfile = "m8def.dat"

$crystal = 1000000

Config Pind.5 = Output
Config Pind.6 = Output

Config Int0 = Rising
Config Int1 = Rising
Enable Interrupts                                     
Enable Int0
Enable Int1
On Int0 Unterprogramm
On Int1 Unterprogramm2

Dim Laenge As Byte

Laenge = 0

Led1 Alias Portd.5
Led2 Alias Portd.6

Do

Led1 = 1
Waitms 1
Led1 = 0
Waitms Laenge
Loop                                                        '

Unterprogramm:

Laenge = Laenge + 1

Return

Unterprogramm2:

Laenge = Laenge - 1

Return 
ich habe glube ich
Do

Led1 = 1
Waitms 1
Led1 = 0
Waitms Laenge
Loop

geändert in

Do

Led1 = 0
Waitms Laenge
Led1 = 1
Waitms Laenge


Loop

oder irgend wie so

und den crystal wert habe ich verändert um die geschwindigkeit an zu passen
Benutzeravatar
Pehu
Mega-User
Mega-User
Beiträge: 469
Registriert: Mi, 01.11.06, 19:33
Kontaktdaten:

Sa, 20.01.07, 21:53

@Neo Da ich es auch mal geplant habe, ein Stroboskop zubauen, bei dem man es genau so einstellen kann, wie du es haben willst. Habe ich mehr Zeit investiert und habe jetzt einen Code für dein/mein unser Stroboskop erstellt. :wink:

Knapp eine Stunde habe ich für den Code gebraucht.
Für das Verhältnis zwischen Ein & Aus, habe mit Nachkomma gearbeitet.
Z.B.: 0,01 (1 %) und 0,99 (99 %)

Damit beim subtrahieren der "Verhältnis-Zahlen" nicht unter 0 bzw. in Minus-Bereich geht, habe ich eine IF-Abfrage geschaltet. Der das kontrolliert und bei erreichen von 0,01 abriegelt.

Dann gab es noch mit mehreren Problemen zukämpfen:

Das Problem ist, dass der "Waitms"-Befehl keinen Zahlentyp "Single" bzw. Nachkomma annimmt. Aber nur der Zahlentyp Single ermöglich Nachkommas. Dadurch muss die Variabel mit Single in Integer umkonventiert werden und anschließend an Waitms weitergegeben werden. (Denn genau so ein Problem hatte ich früher in der Java-Programmierung und dementsprechend gleich gelöst :D :D :D )


Taster1 -> Frequenz verringern (längere Pausen)
Taster2 -> Frequenz erhöhen (kürzere Pausen)
Taster3 -> Verhältnis um 1 % nach "Led an" verlagern
Taster4 -> Verhältnis um 1 % nach "Led aus" verlagern

Taster4 habe ich auskommentiert, da ich keinen Taster4 auf meinem Pollin-Board habe. :wink:

Nebeneffekt: Wenn man die Tastern länger gedrückt hält, erhöhen sich die Werte sehr schnell! Was ich sogar positiv finde und deshalb drin gelassen habe. :D Möchte man feinere Auflösung haben, immer brav die Tastern kurz drücken. :wink:

Code: Alles auswählen

$regfile = "m8def.dat"

$crystal = 1000000

Config Pind.5 = Output
Config Pind.6 = Output
'Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pind.4 = Input

Config Timer0 = Timer , Prescale = 64
On Ovf0 Unserunterprogramm_isr

Enable Timer0
Enable Interrupts

Dim Pause As Integer
Dim D As Single
Dim D2 As Single
Dim Ein As Single
Dim Ein2 As Integer
Dim Aus As Single
Dim Aus2 As Integer

Taster1 Alias Pind.2
Taster2 Alias Pind.3
Taster3 Alias Pind.4
'Taster4 Alias Pind.1

Led1 Alias Portd.5
Led2 Alias Portd.6

Pause = 500
D = 1
D2 = 1

Do

Aus = Pause * D
Aus2 = Aus

Toggle Led1

Waitms Aus2

Ein = Pause * D2
Ein2 = Ein


Toggle Led1

Waitms Ein2

Loop

Unserunterprogramm_isr:

If Taster1 = 1 Then

Pause = Pause + 1

End If

If Taster2 = 1 Then

If Pause > 1 Then

Pause = Pause - 1

End If

End If

If Taster3 = 1 Then



If D > 0.01 And D2 > 0.01 Then

D = D - 0.01
D2 = D2 + 0.01

End If


Waitms 1

End If

'If Taster4 = 1 Then

'D = D - 0.01
'D2 = D2 + 0.01

'End If

Return

Zuletzt geändert von Pehu am So, 21.01.07, 10:02, insgesamt 1-mal geändert.
Benutzeravatar
alexStyles
Auserwählter
Auserwählter
Beiträge: 2333
Registriert: So, 20.08.06, 16:51
Wohnort: Düsseldorf
Kontaktdaten:

Sa, 20.01.07, 22:17

Hi Pehu...
habe das mal so übernommen :oops: :roll:
Weiss jetzt net genau ob das so gesehen schon fertig waqr fürs "Board"...
Aber bei mir blinkt auch "nur" eine Led und wenn man taster 2 gedrückt lässt ist irgendwann die LED ganz aus :lol:
Nach einem Reset leuchtet sie dann wieder "Normal"....

MfG Alex

Edit: Ich weiss zwar nun nicht wie Ihr mal bzw. schonmal diesen "Blinker" mit dem NE555 Aufgebaut habt aber mit nem Poti bzw. 2 Potis kann man da auch ganz schöne Effekte hinkriegen :)
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

Sa, 20.01.07, 23:02

danke Pehu :D :D :D :D :D :D :D :D

edit : mir fällt Grade auf das ich als mod die Möglichkeit habe für hilfreiche beiträge credits zu vergeben
und das hat mir sehr geholfen :wink:
Benutzeravatar
Pehu
Mega-User
Mega-User
Beiträge: 469
Registriert: Mi, 01.11.06, 19:33
Kontaktdaten:

So, 21.01.07, 10:02

Aber bei mir blinkt auch "nur" eine Led und wenn man taster 2 gedrückt lässt ist irgendwann die LED ganz aus
Nach einem Reset leuchtet sie dann wieder "Normal"....
Im Code wird auch nur eine Led angesteuert, somit wird auch "nur" eine Led leuchten. :wink:

Ja, wenn Taster2 zulange gedrückt wird, subtrahiert er immer weiter, irgendwann wird es kleiner als 0 und geht in den Minus-Bereich. Und vermutlich kann "Waitms" nichts mit einer Minuszahl anfangen.

Hab den Fehler einfach durch eine zusätzliche Abfrage behoben (hab es in den oberen Code auch geändert):

Code: Alles auswählen

If Taster2 = 1 Then

If Pause > 1 Then

Pause = Pause - 1

End If

End If
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

So, 21.01.07, 12:16

ich bin Garde dabei den Code zu testen so ganz perfekt ist er aber noch nicht zumindest auf den attiny 3213
aber ich bin sicher das sind nur Kleinigkeiten

der erste Fehler der mir aufgefallen ist wen ich Taster 2 gedrückt halt bis zum maximum und danach Taster 3 drücke geht die LED aus

und da sich die off time ja nicht änder wen ich frequenz erhöhe wird die LED immer heller
aber das wa wohl von dir so beabsichtigt ?oder


wen ich könnte würde ich das so lösen


$crystal = 100000 + Laenge2



Do

Led1 = 1
Waitms 100 + Laenge
Led1 = 0
Waitms 100 - Laenge

Loop

dann könnte man mit Laenge das verhältnis einstellen
und mit Laenge2 die geschwindigkeit mit der das Programm läuft

nur das geht natürlich nicht so :roll:
aber gibt es ne andere Möglichkeit in der Art ?
Benutzeravatar
Pehu
Mega-User
Mega-User
Beiträge: 469
Registriert: Mi, 01.11.06, 19:33
Kontaktdaten:

So, 21.01.07, 13:20

der erste Fehler der mir aufgefallen ist wen ich Taster 2 gedrückt halt bis zum maximum und danach Taster 3 drücke geht die LED aus
Jep, das passiert mir auch. Die Led bleibt für ein paar Sek. aus und leuchtet danach wieder. Ich vermute das Problem ist, dass er 1 ms Led an und 1 ms Led aus macht, und dann versucht 1 ms Led an * 0,01 zu nehmen was = 0,01 ms ergibt, dann wandelt er es wieder in Integer um und kommt wieder auf 1 ms raus.

Das teil auf so einen Grenzwert zu betreiben, habe ich natürlich nicht geplant. :wink:
Naja, aber 0,01 ms Led an und 0,99 ms Led aus werden wir als Mensch fast nicht mehr sehen. :D

@Neo verstehe nicht ganz was du vor hast, werde dich mal per ICQ kontaktieren. :D
Benutzeravatar
dedicated
Mega-User
Mega-User
Beiträge: 141
Registriert: Do, 04.01.07, 14:18

So, 21.01.07, 13:46

Neo hat geschrieben: das Gänze soll ein möglichst großen Bereich abdecken von 1Hz - je mehr je besser wen das die Sache einfacher macht würde ich mich mit 254Hz zufrieden geben
254Hz kann man doch gar nicht mehr erkennen

40hz bis 50hz nur noch ein wages flimmern

Strobokop-Effekt liegt bei 1hz bis 15hz

also 1hz 500ms an 500ms aus
bei 10hz 50ms an 50ms aus

mfg Martin

Edit: Ausser man würde das ganze Filmen, dann könnte man höhere Frequenzen als ein Flimmern auf dem Video sehen.
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

So, 21.01.07, 14:12

es geht darum das sich drehende Objekte stehend erscheinen zb Lüfter :wink:

wen sich ein Lüfter mit 10000 Umdrehungen pro Minute dreht sind das ~ 167 pro sekund
wen der lüfter jetzt 6 blätter hat dann kam man mit 1000Hz den effekt erzeugen das der Lüfter sich nicht dreht

ich gebe zu 10000 rpm ist etwas viel für ein Lüfter aber es ist ein Beispiel
Benutzeravatar
dedicated
Mega-User
Mega-User
Beiträge: 141
Registriert: Do, 04.01.07, 14:18

So, 21.01.07, 14:33

Achso, jetzt erscheint es mir klarer was du genau bezwecken willst.

Aber wenn du den Lüfter irgendwo einbauen willst, ändert sich die Drehzahl je nach:

aerodynamischen Widerständen;
Verwirblungen;
Unter und Überdruck;


Du könntest vielleicht die Drehzahl des Lüfters mit einer Lichtschranke oder einem anderen Sensor abfragen.
Naja versuch erstmal die Schaltung und Programmierung mit den Tastern hinzubekommen.


Ich bin jedenfalls sehr an deinem Projekt interessiert weil es sehr schwierig ist, und würde gern sehen wie es sich weiterentwickelt.

MfgMartin
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

So, 21.01.07, 14:37

es geht mir nicht nur um den Lüfter
das Gänze soll universell verwendbar sein :wink:

und die Drehzahl eines lüftes ist eigentlich relativ konstant den
aerodynamischen Widerständen;
Verwirblungen;
Unter und Überdruck;

verändern sich ja nicht stark und wen doch kann man etwas nachjustieren
DnM
Hyper-User
Hyper-User
Beiträge: 1118
Registriert: Mi, 24.05.06, 20:58
Wohnort: Bonn
Kontaktdaten:

So, 21.01.07, 14:49

die meisten lüfter ham doch n dritten anschluss um die drehzahl auszulesen ich weiß aber immo net genauz wie das geht
Benutzeravatar
Neo
Auserwählter
Auserwählter
Beiträge: 2631
Registriert: Fr, 25.02.05, 23:22
Wohnort: hessen-wisbaden
Kontaktdaten:

So, 21.01.07, 15:18

JA aber darum geht es nicht :wink:

das soll wiegesagt nicht für Lüfter sein zumindest nicht nur
sondern für alle arten von schnell beweglichenteilen
Antworten