Forum: Mikrocontroller und Digitale Elektronik Teelicht mit PIC10F200


von Pascal M. (amagin)


Angehängte Dateien:

Lesenswert?

Ich begrüsse alle in diesem tollen Forum recht herzlich.

Ich bin kein grosser Schreiber deswegen werde ich mich kurz fassen, da 
ich ein blutiger Anfänger bin Wolde ich mal klein an fangen und habe mir 
Vorgenomen ein Bausatz den ich gekauft habe der ein PIC10F200 erhellt 
nach zu bauen.

Es Handelt sich da um das (Electronic Tealight Candle von Velleman-kit )

Mein Problem ist es die LED mit dem I/O Ausgang am Pin 5 Flackern zu 
lasen das es wie eine Kerzen flamme rüber kommt brauche ich ein Programm 
und da komme ich nicht wieder …

Kann ich das mit einem schnellen ein und aus schalten mit den Program 
Code:

LATB = 1;
Delay10KTCYx(100);
LATB = 0;
Delay10KTCYx(100);

Realisieren wenn ich das genug oft widerhole und der Delay Wert von 100 
verengere um den  schalt in puls erhöbe wie ein schneller Strobo umso 
zum Erfolg zu kommen oder gibt es eine bessere möglichkeilt?

Die Schaldung ist auf 3V:

von M. J. (manfred-64)


Lesenswert?

Hi,

grundsätzlich bist Du schon mal auf dem richtigen Weg.
Informiere Dich mal über PWM (PulsWeitenModulation) allgemein und PWM + 
lED.
Gibt's sicher auch mehr als genug hier im Forum.


G
Manni


PS: Bitte die Bilder nächstes mal richtig herum :)

von pic u. (pic_user)


Lesenswert?

Handelt es sich wirklich um ein pic10F200 ?
Dieser hat kein LAT Register und auch die pic18 Routinen funktionieren
nicht. Es gibt, bzw soll es Pic18 in 6Pin Gehäusen geben, diese fangen
aber ab 10F3xx an, darunter sind es meines wissens nur pic12.

von pic u. (pic_user)


Lesenswert?

Hier ein Code, welchen du anpassen könntest:


;  Candle Simulation
;  6/04 Luhan Monat
;
;  Simulate flicker of candle using incandescent lamp
;


  device  PIC10F200,intrc_osc,pwrte_on,wdt_off


  org  20h

del1  ds  1
del2  ds  1
pcnt  ds  1
temp  ds  1
lev1  ds  1
lev2  ds  1
level  ds  1
rbuf  ds  5


#define LAMP  GPIO,0

  org  0

start  movwf  OSCCAL
  movlw  1
  TRISW  GP
  bsf  rbuf,0    ;seed random number
  movlw  127
  movwf  lev1    ;initial light level
  movwf  lev2


; Main Loop
; Create hi and low power levels
; Switch between levels

candle  movf  lev1,w
  movwf  level
  call  power    ;do lev1 power
  call  rando
  andlw  7
  btfss  z
  goto  run    ;skip 7 out of 8
  call  rmid    ;generate new hi and low levels
  movwf  lev1
  sublw  0
  movwf  lev2
run  movf  lev2,w    ;do lev2 power
  movwf  level
  call  power
  goto  candle



; PWM power control

power  movlw  100    ;set flicker rate: higher=slower
  movwf  pcnt    ;set loop count
p1  movf  level,w    ;get target level
  movwf  del1    ;set 1st delay
  sublw  0
  movwf  del2    ;set 2nd delay
  bsf  LAMP    ;power on
p3  nop
  decfsz  del1    ;do 1st delay
  goto  p3
  bcf  LAMP    ;power off
p4  nop
  decfsz  del2    ;second delay
  goto  p4
  decfsz  pcnt
  goto  p1


; find sum of 4 random numbers
; skews results around 127

rmid  call  rando
  andlw  3fh
  movwf  temp
  call  rando
  andlw  3fh
  addwf  temp
  call  rando
  andlw  3fh
  addwf  temp
  call  rando
  andlw  3fh
  addwf  temp,w
  ret


; Pseudo Rando Number
; "Chop Suey Machine"

rando  movf  rbuf,w
  addwf  rbuf+1,w
  movwf  rbuf+1
  addwf  rbuf+2,w
  movwf  rbuf+2
  addwf  rbuf+3,w
  movwf  rbuf+3
  addwf  rbuf+4,w
  movwf  rbuf+4
  bcf  c
  rlf  rbuf+4
  btfsc  c
  bsf  rbuf+4,0
  movf  rbuf+4,w
  addwf  rbuf
  ret


  end

von Michael S. (rbs_phoenix)


Lesenswert?

Der genannte PIC hat 6 PINs, wieso ist in der Bezeichnung dann der Pin 7 
und 8? ;) 1 und 6 Fehlen, warum auch immer diese, da die nichtmal 
gegenüber sind.

Abgesehen davon hat der PIC10F200 kein PWM-Modul (also PWM in Software) 
und hat nur 384Byte an Flash-Platz, wo das Programm ist und evtl auch 
eine PWM-Tabelle. Die 14 Byte RAM sind ja auch eher unbrauchbar.
Alternativ, solange du einen wirklichen 8pinner benutzen magst/kannst 
(DIP [wohl zu groß], SOIC8 oder DFN), würde ich den PIC12F1822 oder 
PIC12F1840 empfehlen. Der hat nicht nur genug Luft im Flash, sondern hat 
auch ein PWM-Modul. Das heißt, einmal Konfigurieren und dann nur noch 
Bytes aus der Tabelle/Array in das Register schreiben und das Modul 
macht den Rest. Und das mit 10bit (PWM).
Dazu kommt, dass der PIC10F200 einen internen 4MHz-Generator hat, also 
1MHz Befehlstakt und der PIC12F1822/1840 32MHz, also 8MHz Befehlstakt. 
Somit kannst du ggf. sogar Zufallszahlen "berechnen" (evtl sogar durch 
einen offenen AD-Eingang, den der PIC10F200 auch nicht hat), damit das 
Flackern nicht so "absichtlich" aussieht, und deine PWM läuft nebenbei 
einfach weiter..

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.