Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




H-bridge!

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.




Znalezionych wyników: 10
Dioda.com.pl Strona Główna
Autor Wiadomość
  Temat: Dobór materiału
jogurt_wisniowy

Odpowiedzi: 4
Wyświetleń: 1024

PostForum: Pozostałe   Wysłany: 16 Mar 07 11:27   Temat: Dobór materiału
Zabieram się za zrobienie pierwszego robota i pojawiły się pierwsze problemy :-D
Jeżeli chodzi o konstrukcję będzie on wyglądał mniej więcej tak:

i teraz zastanawiam się z czego go wykonać aluminium czy pcv (a może jakeś inne propozycje?) Co byście doradzali? Jaka powinna być orientacyjna grubość któregoś z tych materiałów żeby miało to odpowiednią sztywność? Prawdopodobnie wenątrz i tak zrobię jakąś małą kratownicę dla zwiększenia sztywności ale jestem ciekaw jak to orientacyjnie powinno wyglądać. Robot w całości na pełnym wysięgu (z chwytakiem którego tu nie ma) będzie miał ok 25-30 cm Łączenia będą klejone, pasuje żeby materiał dobrze kleił się ze stalą (łożyska przy osiach)
  Temat: Dobór materiału
jogurt_wisniowy

Odpowiedzi: 4
Wyświetleń: 1024

PostForum: Pozostałe   Wysłany: 16 Mar 07 04:20   Temat: Dobór materiału
korzystałem z Google SketchUp świetne narzędzie gdy trzeba zamodelować szybko coś prostego, A jakieś konkretniejsze rady co do materiału? Bo bez tego nie dobiorę mocy serw.
  Temat: Funkcja "CONFIG SERVOS" w Bascomie
jogurt_wisniowy

Odpowiedzi: 10
Wyświetleń: 1132

PostForum: Mikrokontrolery   Wysłany: 16 Mar 07 04:22   Temat: Funkcja "CONFIG SERVOS" w Bascomie
Małe pytanie co do tej instrukcji, jaki minimalny kąt obrotu można uzyskać za jej pomocą?
  Temat: Funkcja "CONFIG SERVOS" w Bascomie
jogurt_wisniowy

Odpowiedzi: 10
Wyświetleń: 1132

PostForum: Mikrokontrolery   Wysłany: 24 Mar 07 06:52   Temat: Funkcja "CONFIG SERVOS" w Bascomie
ok już sobie z grubsza poradziłem, kod wygląda tak:

Kod:

$regfile = "m8def.dat"
$crystal = 10000000
$baud = 9600

Config Servos = 4 , Servo1 = Portc.0 , Servo2 = Portc.1 , Servo3 = Portc.2 , Servo4 = Portc.3 , Reload = 2


Config Portc = Output
Config Portd.0 = Input

Enable Interrupts


'Dla reload 2 i 10 Mhz od 126-250 kąt 1.45 stopnia
Servo(1) = 126
Servo(2) = 150
Servo(3) = 150
Servo(4) = 250


Dim Servo_pos(4) As Byte

Do

   Servo_pos(1) = Servo(1)
   Servo_pos(2) = Servo(2)
   Servo_pos(3) = Servo(3)
   Servo_pos(4) = Servo(4)


Dim A$ As String * 1
   A$ = Waitkey()


If A$ = "z" And Servo_pos(1) > 126 Then
   Servo(1) = Servo_pos(1) - 1
End If

If A$ = "x" And Servo_pos(1) < 250 Then
   Servo(1) = Servo_pos(1) + 1
End If

If A$ = "c" And Servo_pos(2) > 126 Then
   Servo(2) = Servo_pos(2) - 1
End If

If A$ = "v" And Servo_pos(2) < 250 Then
   Servo(2) = Servo_pos(2) + 1
End If

If A$ = "b" And Servo_pos(3) > 126 Then
   Servo(3) = Servo_pos(3) - 1
End If

If A$ = "n" And Servo_pos(3) < 250 Then
   Servo(3) = Servo_pos(3) + 1
End If

If A$ = "m" And Servo_pos(4) > 126 Then
   Servo(4) = Servo_pos(4) - 1
End If

If A$ = "," And Servo_pos(4) < 250 Then
   Servo(4) = Servo_pos(4) + 1
End If


Loop
End


Precyzja sterowania serwem zależy od częstotliwości kwarcu i parametru reload, udało mi się dojść do wielkości rzędu 0.8 stopnia (16MHz, reload = 1) ale brakuje mi zakresu w przypadku instrukcji servo() (jest ona typu BYTE i obsługuje wartości do 255) i serwo nie wykonuje obrotu w pełnym zakresie swoich możliwości. Czy można to ominąć pisząc swoją procedure obsługi serwa, i do jakich wielkości można dojść. Jak bardzo to jest skomplikowane do napisania? I pytanie z innej beczki, próbuje dogadać się z mikroprocesorem przez rs232 ale nie bardzo mi wychodzi, na dole widać kawałek kodu który wymyśliłem posiłkując się googlem i helpem, ale to bydle nie chce działać, można prosić o jakieś wskazówki?


//zmieniłem kod na taki jaki mam obecnie, żeby nie wklejać kolejnego prawie że identycznego kawałka kodu w kolejnym poście. Transmisja rs232 działa już jak należy
  Temat: Funkcja "CONFIG SERVOS" w Bascomie
jogurt_wisniowy

Odpowiedzi: 10
Wyświetleń: 1132

PostForum: Mikrokontrolery   Wysłany: 31 Mar 07 08:08   Temat: Funkcja "CONFIG SERVOS" w Bascomie
Teraz kolejne pytanie jak widać w mojej poprzedniej wiadomości zmiana kątu serwa jest dokonywana co jeden krok po wykryciu naciśnięcia odpowiedniego znaku. Chciałbym jednak żeby obrót był dokonywany przy pomocy jakiejś dłuższej sekwencji znaków (np: A10 wtedy mógłbym to przerobić takżeby serwo A obróciło się za jednym zamachem o 10 kroków) Jaką instrukcję do tego użyć? bo kombinowałem z inkey, input i jakoś niespecjalnie mi to wychodzi. Nie wiem czy to ma jakieś znaczenie ale układ na razie testuje nie na rzeczywistym modelu lecz w Proteusie.
  Temat: PWM na atmega32 w C
jogurt_wisniowy

Odpowiedzi: 3
Wyświetleń: 1138

PostForum: Mikrokontrolery   Wysłany: 15 Lut 08 02:11   Temat: PWM na atmega32 w C
witam, potrzebuję pomocy przy rozgryzieniu PWM dla atmega32 (16MHz) docelowo jest to potrzebne do sterowania prędkością silników z wykorzystaniem mostka H. Chciałbym to napisać w C, mam gotowy kod w bascomie z ks ekspert, ale w żaden sposób nie mogę przenieść tego do C. Tak w ogóle to dopiero zaczynam moją przygodę z elektroniką i programowaniem, poprzeglądałem już kilka kodów źródłowych w których był stosowany pwm, ale nie mogę wyciągnąć żadnego wspólnego mianownika. Widziałem źródła programów w których cały pwm miescił sie w 4 krótkich linijkach, a były też kobyły które ciągnęły się jak makaron do spaghetti. Mój układzik wygląda tak:
http://www.wynajem-maszyn.pl/poligon/sumo/sumo.gif
a kod źródłowy który na razie udało mi się do tego stworzyć prezentuje się tak:
Kod:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>
#include "lcd.c"

#define cbi(sfr, b) (sfr &= ~(1<<b)) // bit 0 na pin portu
#define sbi(sfr, b) (sfr |= (1<<b))  // bit 1 na pin portu




// lewe  kolo PortB 7,6
// prawe kolo PortB 4,5
// lewe kolo enable PORTD 5
// prawe kolo enable PORTD 4
long i2=0;
void delay_ms(uint16_t ms)
{
        while(ms)
        {
                _delay_ms(1);
                ms--;
        }
}
// sterowanie kolami

void lkp() { cbi(PORTB,7);  sbi(PORTB,6); sbi(PORTD,5); } // lewe koło przód
void lkt() { sbi(PORTB,7);  cbi(PORTB,6); sbi(PORTD,5); } // lewe koło tył
void lks() { cbi(PORTB,7);  cbi(PORTB,6); cbi(PORTD,5); } // lewe koło stop
void pkt() { sbi(PORTB,5);  cbi(PORTB,4); sbi(PORTD,4); } // prawe koło tył
void pkp() { cbi(PORTB,5);  sbi(PORTB,4); sbi(PORTD,4); } // prawe koło przód
void pks() { cbi(PORTB,5);  cbi(PORTB,4); sbi(PORTD,4); } // prawe koło stop


//sterowanie jazdą
void przod() { lkp(); pkp(); } // jazda do przodu
void tyl()   { lkt(); pkt(); } // jazda do tyłu
void lewo()  { lkt(); pkp(); } // skręt w lewo
void prawo() { lkp(); pkp(); } // skręt w prawo
void stop()  { lks(); pks(); } // wyłącz silniki


int main(void)
{


DDRD  = 0xff; // port D jako wyjscie
DDRB  = 0xff; // port B jako wyjscie

//lcd_init(LCD_DISP_ON);



przod();        // jedz do przodu
//lcd_puts("Przod");

delay_ms(2000);  // przez 2 sekundy


stop();         // stop
delay_ms(2000);  // przez 2 sekundy

lewo();         // skret w lewo
delay_ms(2000); // przez 2 sekundy

prawo();    // skret w prawo
delay_ms(2000);  // przez 2 sekundy

tyl();

stop();    // zatrzymaj silniki
}

To są moje początki w C także wszelkie optymalizacje mile widziane, ten kod powyżej nie jest do końca mojego autorstwa, jest wypadkową kilku rozwiązań jakie udało mi się znaleźć. Obszerne komentarze do ewentualnego kodu mile widziane ;)
  Temat: PWM na atmega32 w C
jogurt_wisniowy

Odpowiedzi: 3
Wyświetleń: 1138

PostForum: Mikrokontrolery   Wysłany: 17 Lut 08 11:02   Temat: PWM na atmega32 w C
yuuichi napisał/a:
wydaje mi sie ze masz malutki blad przy funkcji do skretu w prawo, bedzie wtedy jechal do przodu bo masz wpisane lkp i pkp.

faktycznie :)

dzięki abxyz za kod,wstępnie w proteusie coś tam się kręci :) próbuję rozgryźć jak to działa, na razie znalazłem takie coś:
Generating PWM signals using Timers in the ATMega chip myślę ze z pomocą Twojego kodu i tej strony jakoś sobie poradzę
  Temat: [C] ADC w atmega8
jogurt_wisniowy

Odpowiedzi: 3
Wyświetleń: 592

PostForum: Mikrokontrolery   Wysłany: 30 Sie 08 05:10   Temat: [C] ADC w atmega8
Dorobiłem się w końcu swojej własnej płytki testowej, zaczynam powoli programować na prawdziwym układzie, a nie symulatorze i pojawił się pierwszy problem, którego nie potrafię przeskoczyć sam.

Krótkie info:
uP: Atmega8 16MHz
Diody Led podpięte pod Portc.0 i PortC.1
Sharp podpiety pod Portc.3


W bascomie potrafię to obsłużyć, ponizszy kod (na podstawie kursu z Komputer Świata) działa:
Kod:

$regfile = "m8def.dat"
$crystal = 16000000

Config Pinc.0 = Output
Config Pinc.1 = Output

Led Alias Portc.0

Declare Function Sharp() As Word

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Led = 0
Wait 1
Led = 1

Do
If Sharp() > 256 Then
   Led = 0
   Else
   Led = 1
   End If
   Waitms 25
Loop
   Function Sharp_odczyt() As Word
      Sharp_odczyt = Getadc(4)
   End Function
End

niestety w C, już nie, mój dotychczasowy kod (starałem się go robić na podstawie (http://www.tkdami.net/~vo...twornik_AC.html) kompiluje się, ale odmawia współpracy:

Kod:
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>

unsigned int pomiar;        // Zmienna do przechowywania wyniku pomiaru

void delay_ms(uint16_t ms)
{
        while(ms)
        {
                _delay_ms(1);
                ms--;
        }
}


void Inicjalizacja(void)
{

DDRC = 0xC0;
PORTC= 0xFF;

    ADMUX |= _BV(REFS0);    //napięcie odniesienia   
    ADMUX |= _BV(REFS1);
//    Wybranie sposobu zapisu wyniku z wyrównaniem do lewej (osiem starszych bitów wyniku w rejestrze ADCH)
    ADMUX |= _BV(ADLAR);       
// Zezwolenie na konwersję   
    ADCSRA |= _BV(ADEN);       
// Wybranie częstotliwości dla taktowania przetwornika
    ADCSRA |= _BV(ADPS0);   
    ADCSRA |= _BV(ADPS1);
    ADCSRA |= _BV(ADPS2);
}

int main(void)
{
    Inicjalizacja();
   
    PORTC |= _BV(0);
    PORTC |= _BV(1);
    while(1)
    {
        ADCSRA |= _BV(ADSC);                 // Rozpoczęcie przetwarzania
        delay_ms(25);    // Oczekiwanie na zakończenie przetwarzania
        pomiar=ADCH;
        if (pomiar > 256)
        {
        PORTC |= _BV(0);
        } else
        {
        PORTC &= ~_BV(0);
        }
        delay_ms(25);
    }
}


Mógłby ktoś pomóc mi przerobić ten bascomowy kod? Przede wszystkim jak powiedzieć uP że chcę odczytać dane z przetwornika ADC3? Z tego co pisze w dokumentacji służą do tego rejstry MUX3:0, ale nie wiem jak z nich skorzystać. Prosiłbym o obszerne komentarze, bede bardzo wdzięczny bo z C jestem zielony jak trawa na wiosnę, a mimo wszystko chciałbym opanować ten język.
  Temat: [C] ADC w atmega8
jogurt_wisniowy

Odpowiedzi: 3
Wyświetleń: 592

PostForum: Mikrokontrolery   Wysłany: 31 Sie 08 01:56   Temat: [C] ADC w atmega8
No niestety nie potrafię tego uruchomić, ostateczny kod:

Kod:

void Inicjalizacja(void)
{

DDRC = 0x3; //00000011
PORTC= 0xFF;


ADMUX |= _BV(REFS0);
// Wybranie sposobu zapisu wyniku z wyrównaniem do lewej (osiem starszych bitów wyniku w rejestrze ADCH)
ADMUX |= _BV(ADLAR);
// Wybór kanału wejścia - PC3 (ADC3)
ADMUX |= _BV(MUX1)|_BV(MUX0);
// Zezwolenie na konwersję
ADCSRA |= _BV(ADEN);
// Wybranie częstotliwości dla taktowania przetwornika
ADCSRA |= _BV(ADPS0);
ADCSRA |= _BV(ADPS1);
ADCSRA |= _BV(ADPS2);
}

int main(void)
{
    Inicjalizacja();
   
    PORTC |= _BV(0); //dioda żółta zgaszona
    PORTC |= _BV(1); //dioda zielona
    delay_ms(1000);
    PORTC &= ~_BV(1); //zaświeć
    PORTC &= ~_BV(0); //zaświeć
    delay_ms(1000);
   
    while(1)
    {
        ADCSRA |= _BV(ADSC);              
        delay_ms(25);
        pomiar=ADCH;
        if (pomiar > 256)
        {
        PORTC |= _BV(0);
        PORTC &= ~_BV(1);
       
        } else
        {
        PORTC &= ~_BV(0);
        PORTC |= _BV(1);
       
        }
        delay_ms(100);
    }


Mam nadzieję ze poprawiłem wszystko tak jak trzeba.
  Temat: Część 1-Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)
jogurt_wisniowy

Odpowiedzi: 37
Wyświetleń: 2119

PostForum: Ogłoszenia   Wysłany: 02 Paź 08 10:15   Temat: Część 1-Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)
Jestem na razie pod wrażeniem, widać ze włożyliście w pierwszą część dużo pracy, mam nadzieję że dalej będzie tak samo dobrze. Mam tylko jedną uwagę i to natury estetycznej, a nie merytorycznej. U mnie pod firefoxem 3 listing kodu wyświetla się w Times new roman, pod wszystkimi innymi przeglądarkami (opera chrome, IE) jest ok. Moglibyście to poprawić?
 
Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group - opowiadania
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare