Elektronicky tlacitkovy regulator zarovky
Moderátor: Moderátoři
p.s. Já tohle řešení nepreferuji, jen ho považuji za možné. Osobně bych raději vytrpěl trochu toho programování jednočipu.
- Přílohy
-
kodér.png- (9.97 KiB) Staženo 73 x
Plus - zvyšuje, Mínus - snižuje (otáčky, jas)
Samozřejmě se to programuje jen pro ukázku v Bascomu:
'jednoduchý regulátor motoru pomocí PWM
$regfile = "attiny2313.DAT"
$crystal = 1000000 'ponechat v továrním nastavení 8MHz/8 t.j. 1MHz
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
'nastavení PWM pro Timer0
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
'konfigurace vstupu
Config Pind.0 = Input 'koder A - plus
Config Pind.1 = Input 'koder B - minus
Config Pind.2 = Input 'tlacitko koderu
Portd = &B111 'pullup pro encoder a tlačítko
Config Portd.5 = Output 'výstup PWM signálu OC0B
Pwm_1 Alias Ocr0b
Tlacitko Alias Pind.2
Dim A1 As Integer 'hodnoty do PWM
Dim X As Byte 'pomocná proměnná pro encoder
Do
X = Encoder(pind.0 , Pind.1 , Minus_1 , Plus_1 , 0)
Loop
'nastavování hodnot pro PWM
'---------
Plus_1:
Incr A1 'zde budeme PWM zvětšovat
If A1 > 255 Then A1 = 255 'kontrola rozsahu
Pwm_1 = A1 'nastavení PWM Timer0
Return
'---------
Minus_1:
Decr A1 'zde budeme PWM zmenšovat
If A1 < 0 Then A1 = 0 'kontrola rozsahu
Pwm_1 = A1 'nastavení PWM Timer0
Return
'---------------------------------------------------------
'Řízení šířkové modulace je jednoduché - změnou proměnné Pwm1a se mění poměr
'impuls/mezera. Maximální hodnota Pwm1a je 255.
'Při Pwm1a = 1 je poměr 1/255
'Při Pwm1a = 2 je poměr 2/254
'Při Pwm1a = 10 je poměr 10/246 atd
'Nastavení Timer1 pro PWM:
'Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up
'Pwm = 8 - osmibitová PWM (Pwm1a = 1 až 255)
'Prescale = 1 - opak.kmit = 20 kHz (při oscilátoru 10MHz)
'Prescale = 8 - opak.kmit = 20/8 kHz) atd
'Compare A Pwm = Clear Down - polarita výst. impulsů je opačná než při Clear Up
'kmitočet PWM=$crystal/Prescale/510 (při rozlišení 8 bitů)
Zatim jsem se snazil vzdycky vsechno obejit a "zjednodusit", tak abych se programovani vyhnul.
OndraHy píše:Chjo... Ja vim, taky bych to nejradsi vyresil programovanim. Jenze to zatim nepripada uvahuJeste na to doma nic nemam a ani jsem se tomu nikdy nevenoval - budu samouk a to zabere dost casu, nez bych tohle zvladnul naprogramovat.
Zatim jsem se snazil vzdycky vsechno obejit a "zjednodusit", tak abych se programovani vyhnul.
Máš vynikající příležitost překročit rubikon. Bez motivace se do programování nikdy nepustíš.
Mám rádio s laděním tlačítkama, po každém zapnutí se musí znova krokovat žádaná stanice, nemá to paměť, při krátkém zarušení pásma se syntezátor nastaví taky třeba někam mimo stanice...
fuck off elektronické řízení, když není 100%
Jo, ty veci co tu pises jsou samozrejme pravda... Ale i s tim pocitam... Pochybuju ze pri zemetreseni, nebo valce si budu tocit s koleckem a regulovat jas zarovky. Poradne opilej uz jsem nebyl hodne dlouho (a kdyz, tak to vytahnu ze zasuvky
A Taky nevim, jestli se potenciometry delaji s tlacitkem, jako je tenhle koder.
Vim, ze to neni nejjednodussi a nejstastnejsi reseni, ale mne by vyhovovalo.
Ale už jsem viděl moc aplikací, kde byly moderní µP a při rychlým zapnutívypnutí se TV uvede do stavu zrnění, nereaguje na tlačítka ani DO, video se kousne a půl hodiny působí dojmem že odešel procesor...
Každému dle jeho přání
Crifodo píše:neříkám že se řešení s enkodérem nedá udělat funkční, třeba pomocí digitálních poťáku s EEPROM (Xicor atd.) zůstane pak jen komplikovaná indikace.
Ale už jsem viděl moc aplikací, kde byly moderní µP a při rychlým zapnutívypnutí se TV uvede do stavu zrnění, nereaguje na tlačítka ani DO, video se kousne a půl hodiny působí dojmem že odešel procesor...
Každému dle jeho přání
Ono to hodně záleží na programovacích schopnostech autora. U nás dělal jeden expert jako diplomku (bakalářku?) napájecí zdroj do cubesatu, samozřejmě řízený uprocesorem. Při obhajobě proběhla debata:
Otázka: Jak to máte ošetřené pro případ narušení chodu programu nějakým rušením?
Odpověď: Nijak.
Otázka: A co alespoň watchdog?
Odpověď: Ten jsem vypnul, protože mi to s ním nefungovalo.
Možná proto (naštěstí?) to ještě nelítá