-
31. Data: 2017-07-08 22:50:09
Temat: Re: Arduino - zliczanie impulsów
Od: Zenek Kapelinder <4...@g...com>
Teraz dolozyles do pieca sa takie co maja 200 milionow zadzian. I to nie jest jakas
super produkcja dla NASA.
-
32. Data: 2017-07-08 23:07:28
Temat: Re: Arduino - zliczanie impulsów
Od: "Michal M. Lechanski" <m...@d...eu>
W dniu 08/07/2017 o 20:59, Janusz pisze:
> autor jeszcze nie wie co to są
> przerwania i po co.
O to, to! ważne spostrzeżenie.
Ale się uczy i, miejmy nadzieję, wkrótce już będzie wiedział. :-)
Bardzo dziękuję za wszystkie odpowiedzi - nie zdawałem sobie sprawy, że
banalny licznik obrotów może w istocie być wcale nie taki banalny...
Pozdrawiam
--
Michał
-
33. Data: 2017-07-09 08:05:27
Temat: Re: Arduino - zliczanie impulsów
Od: slawek <f...@f...com>
On Sat, 8 Jul 2017 21:59:56 +0200, Janusz <j...@o...pl> wrote:
> Co do czasochłonności
W sensie np. przesyłania 32 bajtów przy 9600 bodów - nie zależy od
taktowania CPU i nie da się przyspieszyć. A jak jeszcze będzie
czekanie na gotowość do transmisji... to czas może być dowolnie
długi.
-
34. Data: 2017-07-09 14:03:31
Temat: Re: Arduino - zliczanie impulsów
Od: slawek <f...@f...com>
On Sat, 8 Jul 2017 13:50:09 -0700 (PDT), Zenek Kapelinder
<4...@g...com> wrote:
> Teraz dolozyles do pieca sa takie co maja 200 milionow zadzian. I
to nie jest jakas super produkcja dla NASA.
Policzmy. 1000 razy na sekundę w czasie jednej godziny to 3600 000.
Te 200 milionów zadziałań podzielone przez 3.6 miliona daje około 60
godzin, czyli nawet nie trzy dni.
Czyli przy 1000 impulsach na sekundę po trzech dniach jest spora
szansa na awarię (50%?). Przy 10 impulsach na sekundę układ może
wytrzyma rok zanim padnie. Pomijam kwestię jaka jest moc mechaniczna
pobierana z koła - te styki pracują, skąś biorą na to energię ;)
Moim zdaniem są niezłe przy pracy raz na parę minut, zwłaszcza jeżeli
służą jako przekaźniki. Ale jako czujniki (pole magnetyczne) to
hallotrony chyba są lepsze.
-
35. Data: 2017-07-09 16:06:48
Temat: Re: Arduino - zliczanie impulsów
Od: Zenek Kapelinder <4...@g...com>
Szybko by musial pomykac na rowerze. Tak 3600 km/h, troche wiecej niz polowa
pierwszej predkosci kosmicznej dla Ksiezyca.
-
36. Data: 2017-07-09 17:42:59
Temat: Re: Arduino - zliczanie impulsów
Od: s...@g...com
W dniu niedziela, 9 lipca 2017 14:03:33 UTC+2 użytkownik slawek napisał:
> On Sat, 8 Jul 2017 13:50:09 -0700 (PDT), Zenek Kapelinder
> <4...@g...com> wrote:
> > Teraz dolozyles do pieca sa takie co maja 200 milionow zadzian. I
> to nie jest jakas super produkcja dla NASA.
>
>
> Policzmy. 1000 razy na sekundę w czasie jednej godziny to 3600 000.
> Te 200 milionów zadziałań podzielone przez 3.6 miliona daje około 60
> godzin, czyli nawet nie trzy dni.
>
> Czyli przy 1000 impulsach na sekundę po trzech dniach jest spora
> szansa na awarię (50%?). Przy 10 impulsach na sekundę układ może
> wytrzyma rok zanim padnie. Pomijam kwestię jaka jest moc mechaniczna
> pobierana z koła - te styki pracują, skąś biorą na to energię ;)
>
> Moim zdaniem są niezłe przy pracy raz na parę minut, zwłaszcza jeżeli
> służą jako przekaźniki. Ale jako czujniki (pole magnetyczne) to
> hallotrony chyba są lepsze.
Namęczyłes sie niepotrzebnie.
Jedno zadziałanie jest na około 2m pokonanego dystansu.
Nawet jak wytrzyma nędzne 1 000 000 razy to jest 20 mln metrów czyli 20 000km.
I wtedy się może okazać że trzeba wylutować i załozyc nowy.
Jak na prosty układ do nauki - imho starczy.
Oczywiscie czujnik halla sporo lepszy ale troche utrudnia zadanie...
-
37. Data: 2017-07-09 20:45:37
Temat: Re: Arduino - zliczanie impulsów
Od: "Michal M. Lechanski" <m...@d...eu>
W dniu 07/07/2017 o 12:04, Nifhelm pisze:
> A najlepiej zastosuj przerwania.
Przy pomocy googla takie coś wyskrobałem i zdaje się to działać poprawnie:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 7, 6);
int licznik;
void setup()
{
lcd.begin(16, 2);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, zliczanie, FALLING);
licznik=0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("licznik = ");
}
void loop()
{
lcd.setCursor(8, 0);
lcd.print(licznik);
}
zliczanie(){
static unsigned long lastTime;
unsigned long timeNow = millis();
if (timeNow - lastTime < 50)
return;
licznik++;
lastTime = timeNow;
}
I teraz mam dwa kolejne pytania,
1. a gdybym chciał zliczyć impulsy z innego koła, to co powinienem
zrobić? Chodzi mi o to że może wystąpić sytuacja że przerwania będą
wywołane w tym samym czasie?
2. Powyższy kod działa mi z kontaktronem. Ani czujnik Halla ani
podczerwieni nie dają odpowiednich poziomów napięcia na wyjściu. Czy
trzeba zastosować jakiś zewnętrzny układ dopasowujący czy da się to
zrealizować na samym Arduino?
Jeszcze raz bardzo dziękuję za wszystkie odpowiedzi.
--
Michał
-
38. Data: 2017-07-10 10:52:30
Temat: Re: Arduino - zliczanie impulsów
Od: Cezar <c...@B...pl.invalid>
On 09/07/2017 19:45, Michal M. Lechanski wrote:
> I teraz mam dwa kolejne pytania,
>
> 1. a gdybym chciał zliczyć impulsy z innego koła, to co powinienem
> zrobić? Chodzi mi o to że może wystąpić sytuacja że przerwania będą
> wywołane w tym samym czasie?
Atmega 328 ma dwa przerwania INT0 i INT1 (piny 2 i 3)
> 2. Powyższy kod działa mi z kontaktronem. Ani czujnik Halla ani
> podczerwieni nie dają odpowiednich poziomów napięcia na wyjściu. Czy
> trzeba zastosować jakiś zewnętrzny układ dopasowujący czy da się to
> zrealizować na samym Arduino?
>
> Jeszcze raz bardzo dziękuję za wszystkie odpowiedzi.
>
Przytocze jeszcze raz... wyguglaj "Arduino Analog Comparator Interrupt"
c.
-
39. Data: 2017-07-10 16:14:35
Temat: Re: Arduino - zliczanie impulsów
Od: Nifhelm <pytaj@grupie>
W dniu 09.07.2017 o 20:45, Michal M. Lechanski pisze:
> W dniu 07/07/2017 o 12:04, Nifhelm pisze:
>> A najlepiej zastosuj przerwania.
>
> Przy pomocy googla takie coś wyskrobałem i zdaje się to działać poprawnie:
>
> #include <LiquidCrystal.h>
> LiquidCrystal lcd(12, 11, 5, 4, 7, 6);
>
> int licznik;
Bezpieczniej użyć:
volatile int licznik;
W arduino zmienne modyfikowane w trakcie przerwań powinny być tak
definiowane.
[...]
> I teraz mam dwa kolejne pytania,
>
> 1. a gdybym chciał zliczyć impulsy z innego koła, to co powinienem
> zrobić? Chodzi mi o to że może wystąpić sytuacja że przerwania będą
> wywołane w tym samym czasie?
Wystarczy użyć drugiego przerwania.
> 2. Powyższy kod działa mi z kontaktronem. Ani czujnik Halla ani
> podczerwieni nie dają odpowiednich poziomów napięcia na wyjściu. Czy
> trzeba zastosować jakiś zewnętrzny układ dopasowujący czy da się to
> zrealizować na samym Arduino?
>
> Jeszcze raz bardzo dziękuję za wszystkie odpowiedzi.
>
Arduino na wejściach cyfrowych ma określone poziomy odpowiadające
stanowi wysokiemu i niskiemu. Sygnały wejściowe muszą być więc
dopasowane do tych poziomów, albo wejście nie będzie reagować/zacznie
szaleć.
Najprościej wstawić komparator. Można też kupić gotowe moduły z
czujnikiem odbiciowym i komparatorem. Widywałem takie nawet po 2.50zł.
Mają one od razu wyjście cyfrowe i potencjometr do regulacji czułości.
Pozdrawiam.