Skocz do zawartości

dusi007

Użytkownicy
  • Zawartość

    42
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O dusi007

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Zamość
  1. Przerwanie dodałem ponieważ dla zwykłego wywołania funkcji serwo również się "telepało". Czy patrząc na fragment kodu odpowiadający za odbieranie 3 składowych od TSC3200, możesz powiedzieć co zrobić, gdzie na przykład dodać delay, aby czujnik wykonywał 1 czy 2 odczyty na sek. a nie 8 ? może zmniejszyć wypełnienie? Ten fragment kodu nie jest mój niestety, lecz ze strony botland.
  2. Witam ! Chce zrobić sortownik, bazujący na czujniku koloru, który polegałby na tym, że gdy kolor przedmiotu jest inny niż biały serwo zrzuca dany przedmiot z taśmociągu. Objaśnienia: Jest to czujnik koloru RGB TSC3200, poniższy kod wyświetla 3 składowe RGB, następnie wprowadzam 3 zmienne xx,yy,zz; są ta wartości dla których jest +- kolor biały (powinno być to 255,255,255,ale czujnik nie chce tak odczytać choćby nie wiem co). Pomysł na program generalnie polega na tym, że jeśli otrzyma te wartości(xx,yy,zz) z odchyłem do +-20 to Arduino zmienia stan pinu 3 na HIGH co aktywuje komendę "attachInterrupt" która każe zatrzymać pętle loop, przejść do funkcji "servo" , a ta wykonuje obrót serwa i ustawia wartość na pinie 3 na LOW, co zapętla cały proces. Liczę na waszą pomoc, gdyż serwo nie wykuje obrotu a się "telepie" obroty prawo lewo o mniej więcej stopień góra dwa. Myślę że może być to spowodowane tym, iż czujnik TSC3200 dokonuje bardzo dużo pomiarów ok. 6-8 na sek. Liczę na waszą pomoc ! Pozdrawiam. Oto kod programu: #include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int s0 = 7, s1 = 4, s2 = 5, s3 = 6; //piny modułu połączone z Arduino int zatrzymanie = 3; // pin służący do zatrzymania pętli loop funkcja attachInterrupt. int out = 2; //pin 2 Arduino i OUT od czujnika int flag = 0; byte counter = 0; byte countR = 0, countG = 0, countB = 0; void setup() { Serial.begin(9600); //inicjalizacja monitora szeregowego pinMode(s0, OUTPUT); //ustawienie pinów jako wyjścia pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); digitalWrite(zatrzymanie,LOW); myservo.attach(9); attachInterrupt(digitalPinToInterrupt(3), servo, RISING); } void TCS() { flag = 0; digitalWrite(s1, HIGH); digitalWrite(s0, HIGH); digitalWrite(s2, LOW); digitalWrite(s3, LOW); attachInterrupt(0, ISR_INTO, LOW); timer0_init(); } void ISR_INTO() { counter++; } void timer0_init(void) { TCCR2A = 0x00; TCCR2B = 0x07; //częstotliwość zegara - 1024 TCNT2 = 100; //przepełnienie 10 ms TIMSK2 = 0x01; //pozwolenie na przerwanie } int i = 0; ISR(TIMER2_OVF_vect) //timer 2, 10ms przepełnienie 10ms. funkcja przerwanie wewnętrzengo przepełnienia { TCNT2 = 100; flag++; if (flag == 1) //pobranie i wyświetlenie na ekranie składowych RGB { countR = counter; Serial.print("red="); Serial.print(countR ); digitalWrite(s2, HIGH); digitalWrite(s3, HIGH); } else if (flag == 2) { countG = counter; Serial.print("green="); Serial.print(countG ); digitalWrite(s2, LOW); digitalWrite(s3, HIGH); } else if (flag == 3) { countB = counter; Serial.print("blue="); Serial.print(countB); digitalWrite(s2, LOW); digitalWrite(s3, LOW); int xx =95; int yy = 180; int zz = 54; delay(1000); if(countR>=(xx-20)&&countR<=(xx+20)&&countG>=(yy-20)&&countG<=(yy+20)&&countB>=(zz-20)&&countB<=(zz+20)) { Serial.println("---Bialy \n"); delay(10); digitalWrite(zatrzymanie,LOW); } else { Serial.println("------INNY \n"); digitalWrite(zatrzymanie,HIGH); } } else if (flag == 4) { flag = 0; } counter = 0; } void loop() //główna pętla programu { TCS(); delay(500); while (1); } void servo() { for(byte pos = 5; pos <= 170; pos += 5) // goes from 0 degrees to 170 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(7); // waits 15ms for the servo to reach the position } for(byte pos = 170; pos>=5; pos-=5) // goes from 170 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(7); } digitalWrite(zatrzymanie,LOW); }
  3. Witam ! Mam takie zadanie z przedmiotu o wdzięcznej nazwie "elementy elektroniczne" : Dioda jest spolaryzowana ładunkiem 10 kT/q. Wyznacz przyrost napięcia przy którym prąd wzrośnie dwukrotnie. Z góry dziękuje i pozdrawiam.
  4. Dobrze zamieszczę to już jutro, to znaczy dzisiaj ale w okolicach południa. Nie mierzyłem prądu w obwodzie z transformatorem, ale I powinno wynosić jakiś 1A + , wszystko działa rezystor strasznie się grzeje. To nie są wyniki zerowe ponieważ powstają one w wyniku działania przewodnika, gdy transformator jest wyłączony napięcie na mierniku spada do 0 czyli jest dobrze. Nie podoba mi się jakość i wielkość napięcia, jest ono bardzo niestabilne,podatne na zakłócenia i nie ma mowy (moim zdaniem) alby w tej postaci mogło to pełnić swoją rolę. Myślę że twój pomysł z rdzeniem może coś zmienić. Jutro to zastosuje i prześlę materiał Dzięki raz jeszcze i Dobranoc.
  5. Zgadza się opór na cewce 220 V jest taki jak w notach katalogowych czyli wszystko w porządku. Oto wyniki moich pomiarów: Z 10 cm -Cewka 24 V -Cewka 220 V Z 5 cm -Cewka 24 V -Cewka 220 V Wyniki różniły się o +- 1 jednostkę w zależności od położenia cewki względem przewodu. Wydaje mi się że odczyty są za słabe aby przydały się do czegokolwiek, zwiększyć prąd płynący w przewodzie ? Zastosowałem rezystor 10Ω 20W. Co o tym sądzisz ? __________ Komentarz dodany przez: Sabre Ostatni raz proszę o poprawę zdjęć, kolejna prośba skończy się blokadą pisania nowych postów. Skoro piszesz coś na forum to stosuj się proszę do zasad tutaj panujących i zamieszczaj zdjęcia na forum a nie na obcych portalach, z których te zdjęcia za chwilę znikną.
  6. Po prostu ustawiam multimetr na odpowiednią pozycję i dwie sondy przyłączam do końców cewki. Myślisz że opór jest za duży aby miernik odczytał ciągłość drutu w cewce?
  7. Witam ! Post wcześniej zadałem pytanie dotyczące indukcji prądu w cewce za sprawą przewodnika z prądem i wykorzystaniem jej jako czujnik. Mimo zaporowej ilości materiału na uczelni nieco się za to zabrałem.Zakupiłem wspomniany przekaźnik (24V) i wyjąłem z niego cewkę (Po prawej stronie): Zbudowałem "statyw" który trzymał cewkę na wysokości ok 10 cm. No i tak.. Odczyt był bardzo różny ale o tym już pisałem i wiem że muszę zastosować kondensator w celu wygładzenia przebiegu napięcia. Oto co użyłem do wy indukowania prądu: Transformator znaleziony na kontenerze w Niemczech: Multimetr i woltomierz: Oraz rezystor o dużej mocy: Po tym postanowiłem kupić 8 podobnych przekaźników tylko że na napięcie zmienne 230V. (Pierwszy obrazek po lewej). No i tu jest problem bo odczytu nie ma, gdy sprawdzałem ciągłość obwodu przy tej cewce to multimetr milczy, a przy cewce 24 V jest dźwięk czyli obwód jest zamknięty. No i chyba przegrałem życie bo te cewki są nie właściwe, choć zawsze myślałem że cewki nie różnią się generalnie budową. (Jest też opcja taka że cewki są uszkodzone, ponieważ kupiłem ja na warszawskiej giełdzie elektronicznej po 2 zł/sztuka, no ale z drugiej strony ten 24 V nabyłem w ten sam sposób i działa). I prosiłbym aby ktoś mnie oświecił w tej kwestii. Kolejną sprawą jest sam układ: Cewka - Przyrząd pomiarowy. U mnie wygląda to tak że wy indukowany prąd przesyłam do mostka prostowniczego: A następnie do multimetru lub woltomierza, czy to się nadaje? Z góry dziękuje za wszystkie odpowiedzi, szczególnie za wcześniejsze użytkownika marek1707 , które bardzo mi pomogły. Pozdrawiam. __________ Komentarz dodany przez: Sabre
  8. to znaczy jaki byś sugerował abym uzyskiwał 1 odczyt na sek ? nie chce aż tak zaokrąglonego A co do jakości obu metod ?
  9. Jakościowo lepsze będzie rozwiązanie z buforem czy kondensatororem? Jak dobrać takowy? Chciałbym aby napięcie było możliwie maksymalnie wygładzone. Dziękuję i pozdrawiam.
  10. Niejasno zadałem pytanie? Poprostu chce się dowiedzieć dlaczego odczyt z arduino nie pokrywa się z odczytem z multimetru. Napięcie nie przekracza 5V napisałem już o tym. A i przepraszam za niedokładny program wiem że jedna jednostka jest 1/1023 częścią 5 V. Myślisz że arduino sobie z tym nie poradzi z pomiarem ? A co do kondensatora jak go włączyć? Mniej więcej jaki powinien być?
  11. Witam ! Tak jak w temacie mam problem z odczytem napięcia na monitorze szeregowym. Odczytuje stan napięcia wy-indukowanego na cewce (uprzednio wyprostowanego) no i .... I odczytuje napięcie multimetrem, wychodzi od 40 do 110 mV w zależności od położenia i ruchu, no ale odczyt jakiś sensowny jest, podłączam teraz do Arduino + do pinu A1, masę do GND. Przebieg odczytu nie ma żadnego ładu, czasem pokaże 1023 czasem 0 czasem rośnie rośnie do 75 (czyli miej więcej coś takiego) potem opada do 0 potem 0 0 0 0 0 0 0 0 0 i znów rośnie. Generalnie cuda wianki. Przepraszam być może problem jest elementarny, ale mam nadzieje że któryś z użytkowników rozwieje moją niewiedze. Z góry dziękuje i pozdrawiam. Oto kod programu: int nap = A1; int odczyt; void setup() { Serial.begin(9600); pinMode(nap, INPUT); } void loop() { analogRead(nap); odczyt = analogRead(nap); Serial.print(odczyt); Serial.println(" V"); Serial.println("------------"); delay(100); } __________ Komentarz dodany przez: Treker Kod programu, dla lepszej czytelności, należy umieszczać w tagach . Proszę to poprawić.
  12. Czy latarnie są produktem gotowym ? Można je całe kupić ? bo nie mam wyobrażenia w ogóle jak to wygląda, mógłbyś podesłać jakiś link. Musze podumkać trochę co zrobić. O wynikach powiadomię jak najwcześniej
  13. No nie wiem czy takie tańsze. Taka zabawa z mapowaniem terenu to już wyższa szkoła jazdy myślę że nie poradzę sobie z czymś takim nie wiedziałbym w ogóle jak to ugryźć. Zaproponowałem wcześniejszy pomysł ze względu na jego prostotę. Położenie przy znanym planie toru oraz przebytej odległości kosiarka powinna ustalić. Co do tej nieszczęsnej cewki, myślisz że dostane gotową taką jak mi trzeba ?
  14. To znaczy moim zdaniem "lepszym" rozwiązaniem było by potraktowanie zakopanego przewodu jako trasy dla kosiarki. Wiąże się z przekopaniem całego ogródka i zużyciem sporej ilości kabla. Sądzę jednak że jest to lepsze rozwiązanie ponieważ: -Będzie to instalacja długoterminowa więc chwilowe oszpecenie ogrodu wydaje mi się małą ceną. Mam pomysł na urządzenie przypominające glebogryzarke z tarczą "wduszającą" przewód w podłoże więc i ślad byłby niewielki. -Kosiarka zawsze będzie znała swoje dokładne położenie -Koszenie będzie znacznie znacznie efektywniejsze niż kosiarka błądząca bo oznakowanym terenie. Co do manewrów to też trochę nad tym myślałem i o układnie cewek też. Cała droga była by linią prostą a każdy zakręt byłby pod katem prostym. Wykorzystując taki układ czujników jak zaproponowałem (czerwona linia) kosiarka docierając do zakrętu zatrzyma się gdyż w cewce na linii środkowej będzie się indukował mniejszy prąd niż przy cewce bocznej bliżej kabla. Innymi słowy będzie wiedzieć w którą stronę jest zakręt. Wykorzystując fakt że są pod kątem prostym manewr można zaprogramować "na ślepo" a potem już sama skoryguje swoje położenie. No i co Ty na taką koncepcje ? Co do studiów, wybrałem elektronikę na WAT. Generalnie teraz wolałbym mechatronikę na tej uczelni są tam świetne specjalizacje (automatyka,robotyka,budowa maszyn inteligentnych). Ale zostanę pewnie tutaj, mimo to jestem zadowolony, poziom jest wysoki, dużo znajomych mówi że znalazło po niej dobrą pracę i to mnie przekonało. Jakoś tak dopiero tu zrozumiałem że nie wiem nic tak naprawdę choćby o podstawach elektroniki. Irytuje trochę programowanie w Matlab (myślę ze to bez sensu). Kosiarka (przepraszam że zewnętrzy hosting ale tu jakoś nie mogę dodać obrazka). __________ Komentarz dodany przez: Treker Proszę o informację na PW, jaki konkretnie jest problem z wgrywaniem zdjęć. Postaram się pomóc
×
×
  • Utwórz nowe...