VAŽNO! Ovdje pročitajte kako se registrirati na forum. Bez registracije, nećete biti u mogućnosti pisati na forumu.

stand by

Zapeli ste s projektom? Ovdje je pravo mjesto za postaviti pitanje. Imajte na umu da ekipa e-radionice neće uvijek i/ili redovno odgovarati na pitanja postavljena u ovom podforumu.
Odgovorite
sasa.egic#8674
Novak
Novak
Postovi: 2
Pridružen/a: čet svi 06, 2021 7:55 pm

stand by

Post Postao/la sasa.egic#8674 » čet svi 06, 2021 8:13 pm

Pozdrav

Zelio bih da moja plocica radi tek kad pritisnem tipkalo i to 10 sekundi i da onda opet ode u stend by. Plocica bi, naravno, radila na bateriju...
domagoj#7538
Supporter
Supporter
Postovi: 332
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Zagreb

Re: stand by

Post Postao/la domagoj#7538 » čet svi 06, 2021 9:32 pm

Pozdrav!
Ja samo to napravio na pomalo staromodan način a radi ovako:
  • napajanje pločice sam izveo preko releja (NO kontakt)
  • tipkalo kojim palim pločicu sam spojio tako da premostim kleme COM i NO na releju i na taj način sam pokrenuo program
  • prvu stvar koju program napravi je da upali relej i tako više tipkalo ne mora biti pritisnuto
  • kad istekne zadano vrijeme program ugasi relej, a kako relej prekine napajanje nema više šanse da se pločica upali sama od sebe, može isključivo preko tipkala
Ovakav način se ne mogao nazvati stand by već, ugašen u pravom smislu riječi, ali koga briga kako se zove ako je paljenje isključivo preko tipkala, tj. ne postoji neki drugi razlog zbog kojeg bi se pločica morala upaliti.
Pozdrav, Domagoj
ivan.fadiga#6453
e-radionica.com team
e-radionica.com team
Postovi: 199
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Osijek

Re: stand by

Post Postao/la ivan.fadiga#6453 » pet svi 07, 2021 7:19 am

Pozdrav,
Domagoj je dao jedno rješenje koje je dobro ako pločica ne treba baš biti u stand-by iz nekog razloga jer je s njegovim načinom potrošnja puno manja.
Drugi način je da se tipkalo spoji na wake-up pin mikrokontrolera i kada se pritisne probudi mikrokontroler koji nakon 10sec od buđenja ode u spavanje.
Ovisno o hardveru koji koristite potrebno je odabrati bolji način, ako imate pločicu bez mikrokontrolera onda je bolji prvi način kako je opisao Domagoj, a ako se koristi mikrokontroler na pločici nije problem dodati tipku za buđenje i postaviti kod.

Za prvi način potrebno je još dodati i monostabil koji bi ugasio cijeli sklop nakon 10sec kako ne bi morali koristiti mikrokontroler.

LP,
Ivan
sasa.egic#8674
Novak
Novak
Postovi: 2
Pridružen/a: čet svi 06, 2021 7:55 pm

Re: stand by

Post Postao/la sasa.egic#8674 » sub svi 08, 2021 10:49 am

Decki, puno hvala!
Jedini je problem sto sam ogranicen s prostorom...
Naime, imama 4 elementa: NANO mikrokontroler, Charge regulator, Accelerometer, Voltage regulator! i naravno Akku
Btw, to s WakeUp Pinom bi bilo puno bolje rjesenje...nije nuzno da da se "budi" iz StandBy stanja...
Dakle, tipkalo spojiti na Digital Pin 2 i GND, ili?
Avatar
haluzanpavao#7768
Ozbiljni hardveraš
Ozbiljni hardveraš
Postovi: 86
Pridružen/a: sri lip 13, 2018 12:19 pm
Lokacija: Zagreb

Re: stand by

Post Postao/la haluzanpavao#7768 » ned svi 09, 2021 3:52 pm

Bok narode :)
evo malo pomoči sa jednim malim demom koji je napisan i isproban baš za ovu temu :)
potrošnja za vrijeme spavanja = cca 4.6 mA

Kod: Označite sve

// OVAJ DEMO RADI NA MOKROKONTROLERU ATMEGA328P

#include <avr/sleep.h>
#define tipka 2 // tipka za pokretanje programa
unsigned long pauza_val=100;// milisec
int vrijeme_rada=10;// sekundi traje radnja programa
const byte LED = 9;
//----------rutina za budjenje-----------
void budi ()
{
  sleep_disable();
   detachInterrupt (0);
} 

void setup () 
  {
     pinMode (LED, 1);
 pinMode (tipka, INPUT_PULLUP);  
  }
void loop () 
{
// NEKA RADNJA KOJA TRAJE 10 SEC

       pinMode (LED, 1);
     unsigned long traje =millis()+( vrijeme_rada*1000);
while (millis() < traje ) {
 for (int n=0; n<10;n++){
  
  digitalWrite (LED, 1);
  delay(pauza_val);
  digitalWrite (LED, 0);
  delay (pauza_val);
 }
}
  digitalWrite (LED, 1);
  delay(1000);
digitalWrite (LED, 0);


// pokreče spavanje  OVO MORA OSTATI
ADCSRA = 0;  
  set_sleep_mode (SLEEP_MODE_PWR_DOWN);  
  sleep_enable();

  noInterrupts ();
  
  attachInterrupt (0, budi, 0);
  EIFR = bit (INTF0);  
  MCUCR = bit (BODS) | bit (BODSE);
  MCUCR = bit (BODS); 
  interrupts (); 
  sleep_cpu ();  
  } 
Molio bi povratnu info o radu. HVALA
i sretno
Haližan
ivan.fadiga#6453
e-radionica.com team
e-radionica.com team
Postovi: 199
Pridružen/a: ned tra 15, 2018 2:59 pm
Lokacija: Osijek

Re: stand by

Post Postao/la ivan.fadiga#6453 » pon svi 10, 2021 7:17 am

Ako se već koristi mikrokontroler onda je najlakše koristiti njega i njegove interrupt pinove.
Tipka se spaja između nekog od interrupt pinova i GND kako ste i napisali, samo je potrebno koristiti pull-up otpornik na tom pinu koji može biti ili postavljen u mikrokontroleru kako je Pavao dao kod ili se postavi vanjski.
Za dani kod je dovoljno da se spoji tipka između pina 2 i GND-a i kada se pritisne trebao bi se odraditi određeni zadatak kako je napisano u programu.

LP,
Ivan
Avatar
dekip#3635
Ozbiljni hardveraš
Ozbiljni hardveraš
Postovi: 97
Pridružen/a: pon srp 30, 2018 10:04 pm
Lokacija: Beograd
Kontakt:

Re: stand by

Post Postao/la dekip#3635 » pon svi 10, 2021 6:17 pm

haluzanpavao#7075 je napisao/la:
ned svi 09, 2021 3:52 pm
Bok narode :)
evo malo pomoči sa jednim malim demom koji je napisan i isproban baš za ovu temu :)
potrošnja za vrijeme spavanja = cca 4.6 mA

Kod: Označite sve

// OVAJ DEMO RADI NA MOKROKONTROLERU ATMEGA328P

#include <avr/sleep.h>
#define tipka 2 // tipka za pokretanje programa
unsigned long pauza_val=100;// milisec
int vrijeme_rada=10;// sekundi traje radnja programa
const byte LED = 9;
//----------rutina za budjenje-----------
void budi ()
{
  sleep_disable();
   detachInterrupt (0);
} 

void setup () 
  {
     pinMode (LED, 1);
 pinMode (tipka, INPUT_PULLUP);  
  }
void loop () 
{
// NEKA RADNJA KOJA TRAJE 10 SEC

       pinMode (LED, 1);
     unsigned long traje =millis()+( vrijeme_rada*1000);
while (millis() < traje ) {
 for (int n=0; n<10;n++){
  
  digitalWrite (LED, 1);
  delay(pauza_val);
  digitalWrite (LED, 0);
  delay (pauza_val);
 }
}
  digitalWrite (LED, 1);
  delay(1000);
digitalWrite (LED, 0);


// pokreče spavanje  OVO MORA OSTATI
ADCSRA = 0;  
  set_sleep_mode (SLEEP_MODE_PWR_DOWN);  
  sleep_enable();

  noInterrupts ();
  
  attachInterrupt (0, budi, 0);
  EIFR = bit (INTF0);  
  MCUCR = bit (BODS) | bit (BODSE);
  MCUCR = bit (BODS); 
  interrupts (); 
  sleep_cpu ();  
  } 
Molio bi povratnu info o radu. HVALA
i sretno
Haližan
Ovo ću ti maznuti za potrebe jednog teksta. Nadam se da se ne ljutiš. ;)
:)
Avatar
haluzanpavao#7768
Ozbiljni hardveraš
Ozbiljni hardveraš
Postovi: 86
Pridružen/a: sri lip 13, 2018 12:19 pm
Lokacija: Zagreb

Re: stand by

Post Postao/la haluzanpavao#7768 » pon svi 10, 2021 9:51 pm

sve ok,nemam ja niš protiv ,samo bi volio vidjeti taj text ili stranicu gdi buš to stavil :)
Baš me zanima kaj je u ovom kodu tako interesantno a da svatko nemre napisati, a pogotovo čuvjek tvoga kalibra.:D
L.P.
Halužan
Odgovorite