Forum: Mikrocontroller und Digitale Elektronik Multivibrator mit 3 verschiedenen Taktintervallen, PIC16f628A


von Noob (Gast)


Lesenswert?

Hallo Leute!
Ich möchte einen Multivibrator bauen,der nach dem Einschalten 3 
verschieden lange Intervalle ausgeben kann. Der Ausgang sollte nach dem 
Einschalten für 1 Sekunde nach High gehen,dann 5 Sekunden auf Low 
bleiben, dann 10 Sekunden auf High gehen und schliesslich 30 Minuten auf 
Low bleiben. Danach soll sich der Zyklus wiederholen bis zum Abschalten 
der Betriebsspannung.Die Zeiten sind nur cirka und müssen nicht auf 
Zehntelsekunden eingehalten werden.
Ich könnte mir vorstellen, das ganze mit einem PIC16f628A und dem JDM 
Programmierer zu realisieren.
Aber..., leider kann ich nicht programmieren.
Ich kann mir die entsprechende Hardware selbst zusammenbauen und den PIC 
brennen.
Vielleicht hat ein Boardmitglied Erbarmen mit mir, und schreibt mir ein 
entsprechendes Programm(ist wahrscheinlich eher klein), welches ich dann 
auf den PIC übertragen kann.
Bitte seid so nett, und greift mit da unter die Arme. Ich kenne in 
meiner Umgebung keinen, den ich da anlabern könnte.
Mit vielen, lieben Dank im Voraus für Eure freundliche Ünterstützung 
verbleibe ich mit lieben Grüssen.

Noob

von Tony R. (tony)


Lesenswert?

Wie Zeitnah muss es denn sein? Ich habe zur Zeit viel um die Ohren... 
Ansonsten kannst Du Dir auch ein Tutorial anschauen:
http://www.mstracey.btinternet.co.uk/pictutorial/picmain.htm
In ASM ist das schnell gemacht. Hier kannste die entsprechenden Delays 
generieren lassen, dann musst Du Dich erstmal nicht mit den Timern 
befassen.
http://piclist.com/techref/piclist/codegen/delay.htm
Der Rest ist dann ganz leicht...
Ne Frage noch: Welchen Quarz willste verwenden (Taktfrequenz ist 
logischerweise ganz wichtig...)

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Mit PIC kenne ich mich nicht aus.
Nimm doch nen AVR ATtiny13:
1
#define F_CPU   1.2e6
2
3
#include <util/delay.h>
4
#include <avr/io.h>
5
6
7
void delay_s( uint16_t i )
8
{
9
  for( ; i; i-- )
10
    _delay_ms( 1000 );
11
}
12
13
14
int main( void )
15
{
16
  for(;;){
17
    DDRB = 0xFF;
18
    PORTB = 0xFF;
19
    delay_s( 1 );
20
    PORTB = 0;
21
    delay_s( 5 );
22
    PORTB = 0xFF;
23
    delay_s( 10 );
24
    PORTB = 0;
25
    delay_s( 30 * 60 );
26
  }
27
}


Das fertige HEX ist im Anhang.


Peter

von Noob (Gast)


Lesenswert?

Hallo Tony!
Es muss nicht extreaschnell sein. 1-2 Wochen ist locker Zeit.
Vielleicht könntest Du doch...
Als Taktgeber würde ich den internen Oszillator vorschlagen. Das 
reduziert die Dimension der Schaltung und die Zeit muss nicht ultragenau 
eingehalten weden.

von holger (Gast)


Lesenswert?

>Es muss nicht extreaschnell sein. 1-2 Wochen ist locker Zeit.

Zeit genug es selber zu machen.

von Noob (Gast)


Lesenswert?

Hallo Peter!
Danke für Deine ultraschnelle Antwort!
Ein Atiny13 geht sicher auch. Allerdings weis ich nicht, mit welcher 
Hardware der zu programmieren ist.
Kannst Du mir da auch Informationen geben?

Liebe Grüsse!

von Noob (Gast)


Lesenswert?

Hallo Holger!
Zeit schon, aber es ist extrem schwer, einer Kuh(mir) das Fliegen zu 
lernen.
Ich muss das Programmieren dann von Grund auf lernen(hatte noch nie 
Kontakt damit). Experten brauchen dafür möglicherweise nur eine ganz 
kurze Zeit.

von Tony R. (tony)


Angehängte Dateien:

Lesenswert?

So, hab mich dann doch mal hingesetzt und mir die zeit genommen. Sollte 
so funktionieren. Es wird hier einfach mal der ganze PortB auf high und 
low gesetzt. schau dir die asm mal an. ist eig ganz leicht...

falls es nicht funzt, nochmal melden...

von Frank (Gast)


Lesenswert?

Hallo Noob,

>> Ich möchte einen Multivibrator bauen,der nach dem Einschalten 3
>> verschieden lange Intervalle ausgeben kann.

Nimmt einfach mal eine vom Sexshop! da brauchst du nichts programmieren, 
habe eine für meine Frau geholt, Sie ist damit sehr zufrieden!

von limbo! (Gast)


Lesenswert?

Wieso? Was ist denn daran so kompliziert?

Was du brauchst ist ein Programmiergerät, dass CodeVisionAVR oder das 
AVR-Studio unterstützt.
(CodeVisionAVR darum, da ich die Erfahrung gemacht hab, dass AVR-Studio 
nicht alle AVRs programmieren kann.)

Dann Programmierst du deinen AVR mit dem Programm von Peter und schaust 
was passiert. Das AVR Tutorial wär dazu als Abendlektüre angebracht. :-)

Sollte der Interne Oszillator doch zu ungenau sein, kannst du im 
Programm noch die Millisekunden ändern, so dass es passt und gut ist.

Grüße
markus

von Noob (Gast)


Lesenswert?

Hallo Tony!
Vielen, herzlichen Dank für Dein Programm!!
Ich werde mir ein paar PICs besorgen und jemanden mit einem Brenner 
ausfindig machen. Dann gehts zur Sache...
Ich melde mich wieder, obs klappt.
Muss ich einen bestimmien PIC nehmen, oder lassen sich alle 
handelsüblichen verwenden?
Nochmals ganz vielen, lieben Dank für Deine Bemühungen!

von Tony R. (tony)


Lesenswert?

Es muss auf jeden Fall einer mit nem internen 4MHz Oszillator sein. Wäre 
auf jeden Fall am Besten, wenn Du den 16F628A nehmen würdest.

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.