Switch to full style
Dneska se procesory objevují všude, pokud máte nějaký nápad, či udělát, tak se neváhejte pochlubit.
Odeslat odpověď

ATtiny10 servo tester

sob 12.12.2015 20:16

Jen tak sem si vyrobil servo tester na ATiny10. Co podle vás by takový servo tester měl umět ? Chtěl bych tam ještě něco přidat.Taková malá ukázka toho co umí.


Návod jak vložit video do příspěvku na RCMANIA.cz

Re: ATtiny10 servo tester

ned 13.12.2015 8:00

Dobra je aj funkcia "citlivosti" serva v mikrosekundach. Servo sa necha otocit o nastavitelny pocet mikrosekund. Citlivost je hranica, ked sa servo uz prestane hybat. Daju sa tak porovnavat rozne serva a vlastne merat ich kvalita.

Re: ATtiny10 servo tester

ned 13.12.2015 10:33

Dal bych tam pomalý přejezd serva z kraje do kraje za cca 2-3sec. Pak je pěkně vidět jak se servo s tím popasuje - třeba skoro libovolné "modrásky" kolem 5-9g (a cenou pod 5USD) se chovají spíš jako krokový motor.

Re: ATtiny10 servo tester

pon 14.12.2015 7:50

Celkom dobrá funkcia je aj meranie prúdu do serva. Ale to už asi je iná kategória, u nejakého servotestera som to ale videl.

Re: ATtiny10 servo tester

pon 14.12.2015 8:37

Připojit nějaký jednoduchý displej, aby to zobrazovalo ms.

Jako nápad mi to přijde pěkné, vzhledem k tomu že mi zřejmě zrovna odešel JetiBox, tak bych si asi něco podobného udělal.
Budeš zveřejňovat schéma, zdroják atd... ?

Re: ATtiny10 servo tester

pon 14.12.2015 9:33

Woita píše:Připojit nějaký jednoduchý displej, aby to zobrazovalo ms.

Jako nápad mi to přijde pěkné, vzhledem k tomu že mi zřejmě zrovna odešel JetiBox, tak bych si asi něco podobného udělal.


JetiBox je výborný, ale chyběl mi potenciometr, tak jsem zrovna o víkendu zbastlil takovou pomůcku pro testování různých blikaček a rc spínačů z arduina. Objednal jsem nano za necelé dva dolary a to se vyplatí :wink: . K tomu starý displej a pár součástek a je to. Výhodou je, že i na hotovém servotesteru budu moci přidávat různé funkce (pokud se mi do toho bude chtít).
Přílohy
servotester.jpg

Re: ATtiny10 servo tester

pon 14.12.2015 9:38

Švejku to máš pěkný. 8O
Až to budeš mít vychytaný, uveřejníš?

Re: ATtiny10 servo tester

pon 14.12.2015 10:12

Woita píše:Švejku to máš pěkný. 8O
Až to budeš mít vychytaný, uveřejníš?


To určitě ne, za to to nestojí. Zapojení je triviální a program asi málo univerzální. Uvádím to jako inspiraci.

Re: ATtiny10 servo tester

pon 14.12.2015 12:28

JosefSvejk píše:... i na hotovém servotesteru budu moci přidávat různé funkce (pokud se mi do toho bude chtít).

Mám něco podobného; ve verzi k malým pilkám , ve verzi pro upoutané elektro a pro volné elektro, pár kusů funguje i v raketové technice :mrgreen:

Re: ATtiny10 servo tester

stř 16.12.2015 16:37

Schema to se ani jinak nedá jak upravím zdroják tak to sem hodím
Přílohy
servo tester.png

Re: ATtiny10 servo tester

stř 16.12.2015 19:50

Díky Kubo,
jestli nerozběhnu ten můj pokažený JetiBox, tak bych si ten tvůj zbastlil.

Re: ATtiny10 servo tester

pon 28.12.2015 18:08

Moc sem tomu nedal , ale budu dělat něco na Atmegu8 nebo jinou megu.
Kód:
/*
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define KEY1 (1<<PB2)

uint8_t key_lock;

uint8_t ReadADC(uint8_t channel);

uint8_t time = 20;
uint8_t sw_on = 0;

volatile uint16_t Timer2, Timer3;   // software timers

int main(void){

   CCP = 0xD8;
   CLKPSR = 0x00;  //preskaler = 1

   DDRB |= (1<<PB0);
   DDRB |= (1<<PB3);
   //PORTB |= (1<<PB1);
   PORTB |= KEY1;  //  VCC

   // inicjalizace ADC
   ADCSRA |= (1<<ADEN); // ON ADC
   ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // preskaler = 128

   //TIMSK0 |= (1<<ICIE0);
   TIMSK0 |= (1<<TOIE0);

   TCCR0A |= (1<<WGM01);                             // Fast PWM
   TCCR0B |= (1<<WGM02) | (1<<WGM03);               // Fast PWM
   TCCR0B |= (1<<CS01);                            // Prescaler 8
   TCCR0A |= (1<<COM0A1);// | (1<<COM0A0);        // Clear OC0A
   ICR0 = 9999;
   OCR0A = 1500;

   uint8_t menu = 0;

   sei();

   while(1){

        if( !key_lock && !(PINB & KEY1 ) ) key_lock=1;
        else if( key_lock && (PINB & KEY1 ) ) {
         if( !++key_lock ) {

          // reakce na PUSH_UP
            menu++;
         }
        }

        if(menu >= 4) menu = 0;

        switch(menu){
        case 0:
           time = 10;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 600;
              else OCR0A = 2000;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;
        case 1:
           time = 20;

           if( !Timer3 ){
              OCR0A = 600 + 6 * ReadADC(0x0);
              Timer3 = 10;
           }
                break;
        case 2:
           time = 30;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 1300;
              else OCR0A = 2000;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;
        case 3:
           time = 40;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 1300;
              else OCR0A = 600;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;

        }

      // led blink
      if( !Timer2 ) {
         PORTB ^= (1<<PB3);
         Timer2 = time;
      }

   }
}

//------------- soft timers -----------------------
ISR(TIM0_OVF_vect){

   uint16_t n;

   n = Timer2;
   if (n) Timer2 = --n;
   n = Timer3;
   if (n) Timer3 = --n;
}

uint8_t ReadADC(uint8_t channel) {
   ADMUX = channel;
   ADCSRA |= (1<<ADSC);
   while( ADCSRA & (1<<ADSC) );
   return ADCL;
}

Re: ATtiny10 servo tester

pon 28.12.2015 18:08

Moc sem tomu nedal , ale budu dělat něco na Atmegu8 nebo jinou megu.
Kód:
/*
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define KEY1 (1<<PB2)

uint8_t key_lock;

uint8_t ReadADC(uint8_t channel);

uint8_t time = 20;
uint8_t sw_on = 0;

volatile uint16_t Timer2, Timer3;   // software timers

int main(void){

   CCP = 0xD8;
   CLKPSR = 0x00;  //preskaler = 1

   DDRB |= (1<<PB0);
   DDRB |= (1<<PB3);
   //PORTB |= (1<<PB1);
   PORTB |= KEY1;  //  VCC

   // inicjalizace ADC
   ADCSRA |= (1<<ADEN); // ON ADC
   ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // preskaler = 128

   //TIMSK0 |= (1<<ICIE0);
   TIMSK0 |= (1<<TOIE0);

   TCCR0A |= (1<<WGM01);                             // Fast PWM
   TCCR0B |= (1<<WGM02) | (1<<WGM03);               // Fast PWM
   TCCR0B |= (1<<CS01);                            // Prescaler 8
   TCCR0A |= (1<<COM0A1);// | (1<<COM0A0);        // Clear OC0A
   ICR0 = 9999;
   OCR0A = 1500;

   uint8_t menu = 0;

   sei();

   while(1){

        if( !key_lock && !(PINB & KEY1 ) ) key_lock=1;
        else if( key_lock && (PINB & KEY1 ) ) {
         if( !++key_lock ) {

          // reakce na PUSH_UP
            menu++;
         }
        }

        if(menu >= 4) menu = 0;

        switch(menu){
        case 0:
           time = 10;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 600;
              else OCR0A = 2000;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;
        case 1:
           time = 20;

           if( !Timer3 ){
              OCR0A = 600 + 6 * ReadADC(0x0);
              Timer3 = 10;
           }
                break;
        case 2:
           time = 30;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 1300;
              else OCR0A = 2000;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;
        case 3:
           time = 40;

           if( !Timer3 ) {
              if (sw_on) OCR0A = 1300;
              else OCR0A = 600;
              Timer3 = 100;
              sw_on ^= 1;
           }
                break;

        }

      // led blink
      if( !Timer2 ) {
         PORTB ^= (1<<PB3);
         Timer2 = time;
      }

   }
}

//------------- soft timers -----------------------
ISR(TIM0_OVF_vect){

   uint16_t n;

   n = Timer2;
   if (n) Timer2 = --n;
   n = Timer3;
   if (n) Timer3 = --n;
}

uint8_t ReadADC(uint8_t channel) {
   ADMUX = channel;
   ADCSRA |= (1<<ADSC);
   while( ADCSRA & (1<<ADSC) );
   return ADCL;
}

Re: ATtiny10 servo tester

pon 28.12.2015 18:22

kuba12 píše:Schema to se ani jinak nedá jak upravím zdroják tak to sem hodím

AD vstup z poťáku bych blokl kondíkem proti zemi a na výstup bych zařadil odpor jako ochranu výstupu proti přetížení v případě zkratu apod.

Re: ATtiny10 servo tester

pon 28.12.2015 23:40

Jo odpor ale kondik bych tam nedával akorát to bude brzdit a blokovací tam mam
Odeslat odpověď