-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Rechteckgenerator

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2006
    Beiträge
    128

    Rechteckgenerator

    Anzeige

    --------------------------------------------------------------------------------
    Hallo! Also ich möcht mir nen rechtecksignalgenerator bauen. Eigentlich nciht schwer. einfach ne schaltung mit nem ne555. allerdings möcht ich die frequenz auch anzeigen. (7-segment anzeige)

    ich hab noch ne c control micro über, aber nach kurzem überlegen, war klar, dass dies nicht (schwer) mit diesem microcontroller zu realisieren ist.
    also ein anderer microcontroller. ein atmega8 scheint nach langem suchen gut geeignet. Allerdings ist es so, dass ich keine erfahrung mit diesem microcontroller habe. deshalb frage ich euch um hilfe.

    zusammenfassend: ich möcht nen taktgenerator bauen bei dem die frequenz einstellbar ist und durch 7-segment anzeigen ausgegeben wird.
    (frequenz mind 1-99 Hz) je größer der bereich desto besser.
    da mit c control micro nicht (schwer) realisierbar am besten atmega8. (denn da findet man bei roboternetz sehr viele informationen)
    wie sieht so ne schaltung aus?
    wie sieht das programm für den atmega aus?
    was brauche ich?

    danke für eure hilfe!

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    ich wollte zuerst sowas hier vorschlagen

    aber da du die taktfrequenz angezeigt haben willst, kannst du den atmega als signalgenerator verwenden. der kennt dann auch die frequenz und kann diese auf einem LCD anzeigen.

    hier ein bespiel fürs AVR Studio:
    Code:
     .NOLIST                    ; List-Output unterdrücken
     .INCLUDE <m8def.inc>       ; das gibt es für jeden Controllertyp
     .LIST                      ; List-Output wieder aufdrehen
     .CSEG                      ; was nun folgt, gehört in den FLASH-Speicher
    
    
     ;------------------------------------------------------
     ;     Start Adresse 0000
     ;------------------------------------------------------
     RESET:
         rjmp INIT           ; springen nach "INIT"
    
     ;------------------------------------------------------
     ;     ISR VECTORS
     ;------------------------------------------------------
     ;    .....    hier kommen dann die Sprungadressen für die Interrupts rein
     ;             dazu kommen wir noch
    
    
     .ORG INT_VECTORS_SIZE    ; dadurch haben wir für die Vektoren Platz gelassen
     INIT:  
     ;------------------------------------------------------
     ;     INITIALIZE
     ;------------------------------------------------------
         ldi r24,high(RAMEND)     ;Stack Pointer setzen 
         out SPH,r24              ; "RAMEND" ist in m8def.inc (s.o.) festgelegt
         ldi r24,low(RAMEND)      ; 
         out SPL,r24              ;
    
     ;------------------------------------------------------
     ;   eigene Initialisierungen
     ;------------------------------------------------------
      LDI R24, 255          ; der wert "255" = FF ins allgemeine Register R24
      OUT DDRB, R24         ; das kommt ins Controll-register f. PortC
                            ; dadurch ist das Port auf OUTPUT gestellt
    
     ;------------------------------------------------------
     ;   HAUPTSCHLEIFE
     ;------------------------------------------------------
     Hauptschleife: 
    LDI R24, 255
    OUT PORTB, R24
    ; ============================= 
    ;    delay loop generator 
    ;     1000000 cycles:
    ; ----------------------------- 
    ; delaying 999999 cycles:
              ldi  R17, $09
    WGLOOP0:  ldi  R18, $BC
    WGLOOP1:  ldi  R19, $C4
    WGLOOP2:  dec  R19
              brne WGLOOP2
              dec  R18
              brne WGLOOP1
              dec  R17
              brne WGLOOP0
    ; ----------------------------- 
    ; delaying 1 cycle:
              nop
    ; ============================= 
    LDI R24, 0
    OUT PORTB, R24
    ; ============================= 
    ;    delay loop generator 
    ;     1000000 cycles:
    ; ----------------------------- 
    ; delaying 999999 cycles:
              ldi  R17, $09
    WGLOOP3:  ldi  R18, $BC
    WGLOOP4:  ldi  R19, $C4
    WGLOOP5:  dec  R19
              brne WGLOOP5
              dec  R18
              brne WGLOOP4
              dec  R17
              brne WGLOOP3
    ; ----------------------------- 
    ; delaying 1 cycle:
              nop
    ; ============================= 
            rjmp Hauptschleife         ; immer wiederholen 
    
     ;------------------------------------------------------
     ;   ENDE
     ;------------------------------------------------------
     Ende:  
            rjmp Ende
    die warteschleifen musst du natürlich anpassen, hier schaltet er für 1 mio. takte (bei 1MHz 1Sekunde) den port auf HIGH, dann 1 mio. takte auf low.

    bitte nicht über den code schimpfen, das war mein erstes asm proggie, zusammengestöpselt aus beispiel-code..

    gruesse, die katz

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    @robocat

    Dein Code hat mit Bascom aber irgendwie nichts zu tun.

    @epos

    Mit nem Mega 8 ist ein Rechteck-Generator kein problem. Von der Frequnez sollte es bis in den Megaherzbereich gehen. Die 7 Segment-Anzeige würde ich gegen ein LCD tauchen da kann man einfach mehr Anzeigen und braucht nur 6 Ports am Mega8. Nun stellt sich noch die Frage wie man die Frequenz eingibt wobei mir hier spontan ein Drehimpulsgeber einfällt.

    MfG

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    hi rofo88, hm hat er was von Bascom gesagt? *nachles*
    asouw, hups, ich bin im basic bereich! *doofguck*
    der code geht aber, und vielleicht findet sich ein freundlicher BASCOMler, der ihn übersetzt. ansonsten nix für ungut.
    ich würde auch ein kleines LCD verwenden, das spart schaltungsaufwand und ist flexibler.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2006
    Beiträge
    128
    Danke für eure hilfe!
    hab noch fragen!
    also wenn ich mit dem atmega8 das rechtecksignal erzeuge, dann ist es doch so, dass die amplitude 5V beträgt.
    ich möcht aber mehr! ( so 12V)
    Also zurück zum ne555! damit lässt sich doch eine amplitude von so 12v und mehr erzeugen ,oda? die frequenz kann ich mit nem potentiometer einstellen.
    den atmega8 nutz ich dann um die frequenz zu messen.
    funktioniert das? habt ihr andere vorschläge?

    und noch zum lcd display: ich bin noch blutiger anfänger was das programmieren in Bascom angeht un soweit ich weiß ist die ansteuerung von nem lcd display nicht so einfach. (für mich)
    wenn ich den atmega8 als frequenzmesser verwende hab ich doch genug freie ports. 2 7-segment anzeigen (weil 1Hz-99Hz) anzusteuern ist glaube ich nicht so schwer. ich hab vor einfach zwei bcd- 7 segment decoder zu verwenden. dazu brauch ich 8 ports also nicht so viele. ( ich weiß es gibt noch andere möglichkeiten: multiplexen.....)
    was haltet ihr davon?
    danke für eure mühe!!!!!!

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Häng nen Transistor an den Ausgang der Dir die 12Volt schaltet.
    Die Ansteuerung eines LCDs in Bascom ist kinderleicht...

    Code:
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5 , Db7 = Portc.3 , Db6 = Portc.2 , Db5 = Portc.1 , Db4 = Portc.0
    Config Lcdbus = 4
    Cursor Off
    Cls
    Lcd "Los gehst.."
    ist nur so ein Beispiel

    Also ich würde auf jeden Fall ein LCD nehmen und auf 7 Segment verzichten

    Die Erzeugung der Rechtecke mit nem 555 und nur die Anzeige mit dem Mega zu machen ist auch ne Möglichkeit, währe mir aber schon wieder zu viel Lötaufwand

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2006
    Beiträge
    128
    ok! überzeugt! ich vergess die 7-segment anzeige und steig um auf ein lcd! da ich natürlich auch so wenig lötaufwand wie möglich haben will ist mir deine lösung nur recht! danke!

    einen drehimpulsgeber halte ich auch für sehr gut. dann noch ein schalter zum ein- und ausschalten.

    noch etwas bezüglich der amplitude. da ich den rechteckgnerator für universalinsatz möchte, will ich die amplitude verändern können.
    wenn ich das mit nem spannungsregler mache sollte es funktionieren.
    jetz wäre es natürlich gut, wenn ich auch die amplitude angezeigt bekäme.
    also die spannung mit dem atmega8 ausgeben.
    meine vorstellung: wenn ich den generator einschalte erscheint die frequenz. die kann ich mit dem drehimpulsgeber einstellen. wenn man auf den drehimpulsgeber draufdrückt ( ne zusätzliche leitung für zB. reset, haben die meisten drehimpulsgeber) soll die spannung der amplitude angezeigt werde. diese kann ich durch den spannungsregler einstellen. wenn ich wieder draufgdrücke komm ich zurück zur frequenzanzeige. wie findet ihr das?

    etwas zu hoch?
    wenn nicht wär ich für programmvorlagen, erklärungen oder gar das fertige programm ( das wär natürlich super!) sehr dankbar!

    danke!!!!!

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    klar, das fände ich auch cool, wenn jedes fertige programm einfach angehupft kommt, sobald ich was poste.
    ich war bisher gezwungen, so etwas selber zu bauen/programmieren, und dabei tritt sehr schnell die frage in den vordergrund, welche last (also wieviel ampere) dein generator schluckt.
    auch der drehimpulsgeber will erstmal eingelesen werden, evtl möchtest du als nächstes noch eine strombegrenzung (nätürlich auch mit anzeige)..
    ich finde du stellst dir das etwas leicht vor alles.
    wir werden dir hier helfen wo es geht.. aber einfach ein "ich will das und das" und sofort wird es dir gesagt,.. das klappt nicht.

    du könntest die aktuelle spannung mit dem AD wandler messen, spannungsteiler vorausgesetzt.

    aber hast du überhaupt schon einen atmega geprogged? led blinkt?
    ansonsten steig doch langsam ein, und nicht mit den anforderungen eines frequenzgenerators.

    vor allem hast du nichts davon, wenn dir andere sagen, wie es geht. du musst es ja nachvollziehen und anwenden.

    gruesse

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2006
    Beiträge
    128
    Hallo!
    Na klar weiß ich, dass das was ich mir !!!!vorstelle!!!! alles andere als leicht ist.
    es war ja auch nur eine !!!!Vorstellung!!!!.
    Ein bisschen erfahrung mit nem atmega hab ich schon, da gibts ja auch gute tutorials im net.
    das mit dem fertigen programm hab ich ja auch nicht so gemeint, dass ihr mir das programm schreibt! es ist nur so, dass vielleicht jemand soetwas ähnliches schon mal gemacht hat!
    der generator soll für ungefähr 1A ausgelegt sein. sollte der strom mehr als ein ampere übersteigen schaltet sich der spannungsregler aus.
    aber zurück zum atmega!
    wie gesagt hab ich schon ein bisschen erfahreung mit nem atmega. aber sowas wie ein rechtecksignal erzeugt und die frequenz dieses signals auf einem lcd ausgegeben hab ich noch nicht. deshalb frag ich ja euch um hilfe. (is dieses forum für soetws nicht konzipiert?)
    werd mich jetzt mal mit den atmegas beschäftigen!
    Danke!
    m.l.g.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Antwortautomaten/Für_Dich_Programieren ,erwartest Du hier oder den Wunsch das der Mega 8 auch noch Kaffee kochen kann ... als nächste Vorgabe, ohne selbst eine Zeile je Programiert zu haben ?

    Gento

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •