Stránka 1 z 1

Dvouintervalový blikač

Napsal: 14 črc 2012, 11:12
od elektrom
Zdravím, potřeboval bych radu, jak na obvod pro LEDku, která byl po připojení napětí 4x zablikala, pak 2s zůstala svítit a následně se celý cyklus opakoval, dokud by se nepřerušilo napájení.

Vím, že nejjednodušší bude řešit to přes nějaký μP (pokud možno Pascal nebo C)
Máte proto nějaké doporučení, jaký μP zvolit, případně schéma zapojení?

Obvod bude pro napájení 12 V.

Předem děkuji za rady.

Napsal: 14 črc 2012, 14:42
od Atlan
2* 4017+555

Napsal: 14 črc 2012, 15:09
od hakamusai
Třeba PIC 12F629,překladač Mikropascal nebo MikroC.Jsou u toho příklady,lze to napsat s minimálníma znalostma programování.

Napsal: 14 črc 2012, 20:00
od elektrom
Díky za rady...

Atlan: Nemáš nějaký příklad zapojení (schéma)?

hakamusai: Programování by právě nebyl problém, horší je to se sestavením programátoru..
Nějaké odkazy na funkční levný programátor (schéma)?
Bude stačit, když si sestavím tento?

Napsal: 14 črc 2012, 20:35
od hakamusai
Můžeš to zkusit.Já používám programátor presto,dneska už je forte http://www.asix.cz/prg_presto.htm

V mikropascalu jsou v helpu i schémata zapojení.
Schema třeba tohle:
Obrázek

Napsal: 15 črc 2012, 09:38
od procesor

Napsal: 23 srp 2012, 21:59
od elektrom
Tak jsem po delší odmlce zpět.

Mám následující problém po vložení PIC12F675 do patice se nic neděje, přitom chci, aby dioda blikala s 1 sekundovým intervalem.

Použivám kompilátor mikroPascal PRO.
(Frekvence oscilátoru v mP PRO nastavena na 40 Hz namísto 4 MHz z DataSheetu, tam je zjevně překlep)

Zde je schéma (použil jsem doporučené):
  • Obrázek
Pascal kód:
program PIC12F675_LEDBLINK;

begin
TRISIO := 0;
{
CMCON := 7;
ANSEL := 0;
VRCON := 0;
ADCON0 := 0;
}

while 1 do
begin
GPIO.GP2 := 1;
Delay_ms(1000);

GPIO.GP2 := 0;
Delay_ms(1000);
end;

end.
Zjištění:
  • když přes (další) rezistor měřím napětí na GPIO5 (cca 2.22 V) a "sáhnu" si na onen rezistor, tak začně dioda blikat, jinak nic.
  • zřejmě je třeba pozměnit prvotní nastavení před cyklem, protože ať nastavím TRISIO jakkoliv (:=%00010 (0) nebo %00011 (3)...) dělá to pořád to stejný - viz "zjištění výše"... Když to nenastavím vůbec, nedělá to nic
Jsem si jist, že je to v kódu, protože jsem zkoušel zkompilovaný .hex soubor z této stránky a se zapojením funguje (LED bliká)

Na netu jsou pro tento konkrétní typ čipu příklady, ale jsou většinou v Assembleru, což není něco, čemu bych rozuměl.

Datasheet zde nebo zde (CZ).



Budu rád za jakékoliv rady.

Napsal: 24 srp 2012, 09:01
od ZVUK2000
Dá se to realizovat jen pomocí 555 a samoblikající LED.

Napsal: 24 srp 2012, 11:02
od elektrom
Ze všeho nejradši mám ty, kteří něco píší aniž by si přečetli topic.

Každopádně se mi to podařilo zprovoznit!!!

Zásek byl hlavně v kompilátoru a jeho nastavení:
Je třeba nastavit interní oscilátor (Project/Edit Project.../Oscillator Selection - INTOSC oscillator) a frekvenci oscilátoru zde tedy nastavit zpět na 4 MHz (v datasheetu to mají správně, jen z počátku došlo k nepochopení)

Výsledný kód, kdyby ho někdo potřeboval (dioda bliká po 1 sekundě):

Kód: Vybrat vše

program PIC12F675_LEDBLINK;
begin
  GPIO := 0x00;
  TRISIO := 0x00;       // all ports as output
  ANSEL := 0x00;        // turns off the ADC module
  ADCON0 := 0x00;       // turns off the A/D converter
  CMCON := 0x07;        // turns off the comparator
  VRCON := 0x00;        // turns off Vref for min current

  while 1 do
    begin
      GPIO.GP2 := 1;
      Delay_ms(1000);
      
      GPIO.GP2 := 0;
      Delay_ms(1000);
    end;
end.
(Změna blikání už je jen věcí úpravy kódu ve while cyklu)

Napsal: 26 srp 2012, 21:56
od frantajetel11
elektrom píše:Ze všeho nejradši mám ty, kteří něco píší aniž by si přečetli topic.
No on si asi přečet hlavně první příspěvek. Odpadnul by ti minimálně stabilizátor, ale když chceš tuhle složitost řešit procesorem, tak řeš...