CrazyEngineers
  • i want help with my project "accelerometer controlled robotic arm"

    raaj90

    Member

    Updated: Oct 17, 2024
    Views: 1.1K
    i am making my final year project in electronics .my topic is accelerometer controlled robotic arm .i cannot proceed with circuit diagram and coding of it can any one help ??
    0
    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Replies
  • Harshad Italiya

    MemberApr 19, 2011

    Hello Raj,
    Welcome to CE. See don't waste your time to find the ready code and circuit but try to find the circuit and give at least one or two try to make the code by yourself by this way you can acquire the knowledge which is useful to you in future.
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 20, 2011

    @gf: nice answer bro
    @raaj: hi raaj
    i think i am not right person to tell because as i am in 3rd year but i cant hold without saying
    the project given to you is on your interest am i right
    then why are you asking us to do your project as assembling and checking is not a matter of project because a well known kid can do it try to know components its required and know there properties and combine them
    if you got any problem feel free to ask because we are here to do that
    it may hurt you but it is a fact don't misunderstand me please
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 20, 2011

    i need tip about how to interface an acelerometer with any motor (to drive the arm)??
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 20, 2011

    i think you need controller to interface and control both of them or your accelerometer is having a controller?
    but on basis on this interfacing i think godfather may help you 😀 better than me
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 20, 2011

    what do u suggest ??
    shud i construct the arm or buy 1 ???
    )finance is also my concern in the project.)

    but i have lots of queries that which microcontroller should i use atmega16 or 32 and ?shud i directly interface the triaxis accelerometer with the microcontroller??
    i also need make this project wireless between the arm and accelerometer would that be possible????
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 20, 2011

    raaj90
    i need tip about how to interface an acelerometer with any motor (to drive the arm)??
    As per my knowledge you can't interface your ARM directly to Accelerometer but you have to take the data from the Accelerometer then according to change you have to drive the motor. i mean change in direction decides the motor movement X,Y or Z direction.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 20, 2011

    i also need make this project wireless between the arm and accelerometer would that be possible????
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 20, 2011

    raaj90
    i also need make this project wireless between the arm and accelerometer would that be possible????
    yes i think you can for that you have to use some transmitter and receivers
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 20, 2011

    how many accelerometers will i require to control a 3 fold arm in four directions??
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 20, 2011

    raaj90
    how many accelerometers will i require to control a 3 fold arm in four directions??
    i think it can be done using one because direction of arm depends on movement of motor
    hope i am right and clear
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 20, 2011

    raaj90
    i also need make this project wireless between the arm and accelerometer would that be possible????
    Yes it is Possible why not check this topic #-Link-Snipped-# you can use that RF module for wireless communication.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 21, 2011

    which software shud i use to simulate my project hardware??
    i have a design but i need to test it virtually first.
    i tried on "proteus" but it doesnt have accelerometer control.
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 21, 2011

    raaj90
    which software shud i use to simulate my project hardware??
    i have a design but i need to test it virtually first.
    i tried on "proteus" but it doesnt have accelerometer control.
    Hello Mate,
    I don't think the simulator have all the components you can simulate only some basic components for the accelerometer you have to test it practically and trial and error is the best way make one design debug it and find the solution if any. BUT i suggest to use the reference circuit given in the application note of every devices.
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 22, 2011

    raaj90
    which software shud i use to simulate my project hardware??
    i have a design but i need to test it virtually first.
    i tried on "proteus" but it doesnt have accelerometer control.

    i think all our softwares have a basic components why can't you try for building a accelerometer in that virtual design software
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 22, 2011

    narayana murthy
    i think all our softwares have a basic components why can't you try for building a accelerometer in that virtual design software
    How can he get the data virtually from accelerometer? I think its not possible to simulate Accelerometer in Simulator.
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 22, 2011

    godfather
    How can he get the data virtually from accelerometer? I think its not possible to simulate Accelerometer in Simulator.
    i am not good in simulators but i know only one thing in softwares like matlab we can connect the circuits and try to simulate them in my view they read the component properties and simulate according to them as accelerometer is also a made device but not a basic device it has his own components inside why can't we paste the circuit there and simulate them
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 22, 2011

    narayana murthy
    i am not good in simulators but i know only one thing in softwares like matlab we can connect the circuits and try to simulate them in my view they read the component properties and simulate according to them as accelerometer is also a made device but not a basic device it has his own components inside why can't we paste the circuit there and simulate them
    Yeah you can use MATLAB for some signal or Image processing.
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberApr 22, 2011

    godfather
    Yeah you can use MATLAB for some signal or Image processing.
    yes so i am suggesting this may help in this topic we can connect them and test the output but i think its not so easy to simulate in matlab because many factors effect its simulations
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 25, 2011

    i have attached the layout developed by myself ..along with it i have provided the details in bracket. i just want to know if i am goin right ??

    are there any flaws in basic blocks?? or did i missed something???

    #-Link-Snipped-#
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 25, 2011

    Good Preparation. I like this.

    There is one suggestion you can use RFM70 or RFM22 for RF communication.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 25, 2011

    is it correct?? my block diagram,, shud i start working on it??did i miiss any thing
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberApr 25, 2011

    raaj90
    is it correct?? my block diagram,, shud i start working on it??did i miiss any thing
    Right now everything seems okey. You can start interfacing RF with Controller. once you done that then start interface with sensor and motors.
    Inshort divide your project into sections.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberApr 25, 2011

    why RFM70 or RFM22??
    the ones i have selected is not good???
    Are you sure? This action cannot be undone.
    Cancel
  • xheavenlyx

    MemberApr 25, 2011

    Nice post. Raaj Good block diagram. If you can get things to work you might not need simulation.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 1, 2011

    i got this diagram to interface servo with atmega32 but i cant figure out why the inductor used in it and wat is the supply that shud be connected to motor?? ...i have marked it wid red arrows

    #-Link-Snipped-#
    Are you sure? This action cannot be undone.
    Cancel
  • narayana murthy

    MemberMay 1, 2011

    nice work raaj do you tested it
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 2, 2011

    i got this diagram to interface servo with atmega32 but i cant figure out why the inductor used in it and wat is the supply that shud be connected to motor??

    #-Link-Snipped-#
    Are you sure? This action cannot be undone.
    Cancel
  • xheavenlyx

    MemberMay 2, 2011

    Ok Raj here is the explanation:

    1. The Servo motor can be connected to the power source it specifies. For example if the motor runs on 5V you should connect it to that. If you have the development board then you would use the same supply thats going in to the micro controller.

    2. The AVCC is Analog VCC. It's used when you are using Analog to Digital converters for a signal. Then you would probably use a separate power source than the one powering your microcontroller and connect that to AVCC. For your application it would be connected to 5V (or normal VCC). You can keep it disconnected and see if the circuit works, if not then connect VCC (5V).
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 6, 2011

    ok i got it bt y that inductor and capacitor at pin 50 is used i didnt get that the whole system works just fine without the inductor also
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberMay 6, 2011

    @Raaj~

    Well i am not able to see the images you have attached here. But i can say that if you take this circuit from any reference circuit then please go with all the component they have given and with that much value only otherwise it may work but sometimes you get some weird result to for protection of everything follow the standard Circuitry.
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 7, 2011

    @baron plz see i have attached the image here

    why the inductor used in it????

    [​IMG]
    Are you sure? This action cannot be undone.
    Cancel
  • xheavenlyx

    MemberMay 9, 2011

    Ohk you are asking why Inductor and Cap on Pin #30 (AVCC). The LC combination forms an LC-Filter. It is required to keep the power line noise (and other high frequency noise) from disturbing your Analog pin readings. From our electronic classes we know

    f = 1 / 2 PI sqrt(LC)

    So larger the L and C value the smaller the pass frequency since we need to pass only DC (f ~= 0 ) we can use a good value of L and C like shown in the image, you will mostly be using a ceramic capacitor.

    I hope I have explained it, and please please correct me if I am wrong. Do your own research too. Look up "Bypass Capacitors" and "Filter capacitors" for more information!
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 9, 2011

    i got you bt ,while simulation in proteus all seemed to be fine even if i removed lc from circuit
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberMay 9, 2011

    raaj90
    i got you bt ,while simulation in proteus all seemed to be fine even if i removed lc from circuit
    Dear Raj,

    As i said if possible then use the reference circuit. It might be possible that your circuit can work without some component but to get fully functioned project follow the standard they are using.
    Are you sure? This action cannot be undone.
    Cancel
  • xheavenlyx

    MemberMay 10, 2011

    Yes it will still work. This is completely out of scope here but I came across a report that the LC filter on this particular model of Atmega controller is completely useless because VCC and AVCC were internelly shorted!!! It was a mistake by Atmel, and only on few batches.

    Yes, it will still work, you don't need it. But if you use the Analog to Digital pin you might need it then. Leave it disconnected, if the circuit works, all good. 😀
    Are you sure? This action cannot be undone.
    Cancel
  • raaj90

    MemberMay 11, 2011

    thanx dats helpful
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberMay 11, 2011

    raaj90
    thanx dats helpful
    @Raj ~
    Please do not use SMS text. Please !!
    and share your progress in this project with us. 😀
    Are you sure? This action cannot be undone.
    Cancel
  • ecoo

    MemberJun 8, 2011

    raaj90
    topic is accelerometer controlled robotic arm .i cannot proceed with circuit diagram and coding of it can any one help ??
    Maybe this code help you. AVR processor work with AD7718 ADC and three ADXL203 accelerometers. I could attach schematic, but I need 10+ posts for attachments.
    // Inertial Cluster
    // Processor ATmega8
    // Clock rate 16 MHz
    // https://protoboardfab.com/
    
    #include <iom8.h>            // Declares the internal register addresses for ATmega8
    #include <inavr.h>            // Intrinsics for iccAVR
    
    // Function declaration
    void initPorts (void);                            // ATmega8 Ports init
    void shortDelay400ns (void);                    // Very short delay, approx 400 ns
    void shortDelay1mks (void);                        // Short delay, approx 1 mks
    void longDelay400ms (void);                        // Long delay, approx 400 ms @ 16 MHz
    void clearReadings (void);                        // Clear all readings
    void resetADC (void);                            // ADC reset
    void initUSART (unsigned char baud);            // USART initialization
    void initMasterSPI (void);                        // SPI initialization as a Master
    void transmitMasterSPI (unsigned char SPIData);    // Perform a SPI transmission
    void configADC (void);                            // Configure ADC
    void setChannel (unsigned char channel);        // Set ADC channel
    long ReadADC (void);                            // ADC reading
    long SetAndReadADC (unsigned char channel);        // Set & Read ADC at once
    void transmitUSART(unsigned char tdata);        // USART transmit
    void transmitSLIPUSART(unsigned char tsdata);    // SLIP transmit over USART
    
    // Selftest control
    #define    ST1            PB0            // Selftest pin for accelerometers and angular rate sensor
    #define    ST2            PB1            // Selftest pin for angular rate sensor only
    
    // ADC AD7718 control
    #define    DRDY        (PIND & 4)    // ADC Data Ready (active low, ADC master)
    #define    RSTADC        PD3            // ADC Reset (active low, ADC slave)
    
    // SPI
    #define    MOSI        PB3
    #define    SCK            PB5
    
    // UART
    #define    TXDPIN        PD1
    
    // AD7718 register model
    #define CommWR            0
    #define CommRD            64
    #define CommMode        1
    #define CommControl        2
    #define CommFilter        3
    #define CommData        4
    #define CommOffset        5
    #define CommGain        6
    #define CommIO            7
    #define CommTest1        12
    #define CommTest2        13
    #define CommID            15
    
    // AD7718 variables
    // ADC update rate for CHOP disabled
    #define updateRateNoCHOP1365Hz    3    // ADC update rate = 1365.33    Hz
    #define updateRateNoCHOP315Hz    13    // ADC update rate = 315        Hz
    #define updateRateNoCHOP59Hz    69    // ADC update rate = 59.36    Hz
    #define updateRateNoCHOP16Hz    255    // ADC update rate = 16.06    Hz
    
    #define BaseMode                147    // Chopping is disabled, AINCOM is unbuffered allowing it to be tied to AGND in single-ended input configuration, configured as a 10 pseudodifferential input, oscillator is not shut off, continuous conversion
    #define BaseControl                15    // Select input AIN1, enable unipolar coding, select the ADC input range as 0...+5 V
    
    // AD7718 channels
    #define accelerXch        0
    #define accelerYch        2
    #define accelerZch        5
    #define gyro1ch            4
    #define gyro2ch            9
    #define gyro3ch            6
    #define tempch            8
    #define GNDch            7
    #define accelerXnoFch    1
    
    //SLIP
    #define    SLIPEND        0xC0
    #define    SLIPESC        0xDB
    #define    SLIPENDESC    0xDC
    #define    SLIPESCESC    0xDD
    
    long accelerX;    // Accelerometer 1 (X-axis) current reading
    long accelerY;    // Accelerometer 2 (Y-axis) current reading
    long accelerZ;    // Accelerometer 3 (Z-axis) current reading
    long gyro1;        // Angular rate sensor current reading
    long temp;        // Temperature
    
    void main (void)
    {
        __disable_interrupt();
        initPorts();
        clearReadings();    
        initUSART(12);                                // 38.4 k  @ 8 MHz
        initMasterSPI();
        resetADC();
        configADC();
        //setChannel(accelerXch);
        setChannel(GNDch);
        
        while (1)                                    // Main loop
        {    
            accelerX = ReadADC();
            
            __delay_cycles( 10000 );                // Data synchronizer
            
            //transmitUSART(SLIPEND);
            //transmitUSART (0xAA);
            __delay_cycles( 800000 );    // Debug!!! 100 ms
            transmitUSART((unsigned char)(accelerX>>24));        
            transmitUSART((unsigned char)(accelerX>>16));
            transmitUSART((unsigned char)(accelerX>>8));
            transmitUSART((unsigned char)(accelerX));
        }
    }
    
    void initPorts(void)                    // ATmega8 Ports init
    {
        DDRB = 0;                            // All ports direction = input
        DDRC = 0;
        DDRD = 0;
        
        DDRB |= ( 1 << ST1 );                // Selftest pins = output
        DDRB |= ( 1 << ST2 );
        DDRD |= ( 1 << RSTADC );            // ADC reset and TxD = output
        DDRD |= ( 1 << TXDPIN );
    
        PORTB &= ~( 1 << ST1 );                // Selftest pins = 0 (no selftest)
        PORTB &= ~( 1 << ST2 );
        
        PORTD &= ~( 1 << RSTADC );            // ADC reset = 0
    }
    
    void initUSART(unsigned char baud)                                // USART initialization 
    {
        UBRRH = (unsigned char)(baud>>8);
        UBRRL = (unsigned char) baud;
        UCSRB = (( 1 << RXEN ) | ( 1 << TXEN ));                    // RX, TX enable
        UCSRC = ( 1 << URSEL ) | ( 1 << USBS ) | ( 3 << UCSZ0 );    // Two stop bits, 8 bit
    }
    
    void transmitUSART(unsigned char tdata)                            // USART transmit
    {
        while ( !( UCSRA & (1<<UDRE)) );
        UDR = tdata;
    }
    
    void transmitSLIPUSART(unsigned char tsdata)                    // SLIP transmit over USART
    {
        if (tsdata == SLIPEND) 
        {
            transmitUSART(SLIPESC);
            transmitUSART(SLIPENDESC);
            return;
        }
        
        if (tsdata == SLIPESC) 
        {
            transmitUSART(SLIPESC);
            transmitUSART(SLIPESCESC);
            return;
        }
        transmitUSART(tsdata);
    }
    
    void shortDelay400ns()        // Very short delay, approx 400 ns @ 16 MHz
    {
        __delay_cycles( 3 );
    }
    
    void shortDelay1mks(void)    // Short delay, approx 1 mks @ 16 MHz
    {
        __delay_cycles( 12 );
    }
    
    void longDelay400ms(void)    // Long delay, approx 300 ms @ 16 MHz
    {
        __delay_cycles( 6400000 );
    }
    
    void clearReadings(void)    // Clear all readings
    {
        accelerX = 0;    
        accelerY = 0;    
        accelerZ = 0;    
        gyro1 = 0;    
        temp = 0;    
    }
    
    void resetADC(void)                // ADC reset
    {
        PORTD &= ~( 1 << RSTADC );    // ADC reset pin = 0
        shortDelay1mks();            // Wait
        longDelay400ms();            // Debug!!!
        longDelay400ms();            // Debug!!!
        PORTD |= ( 1 << RSTADC );    // ADC reset pin = 1
        longDelay400ms();            // The oscillator will require the 300 ms start-up time
        longDelay400ms();            // Debug!!!
        longDelay400ms();            // Debug!!!
    }
    
    void initMasterSPI(void)                                // SPI initialization as a Master
    {
        DDRB |= (( 1 << MOSI ) | ( 1 << SCK ));                // Set MOSI and SCK output, all others input
        SPCR = ( 1 << SPE ) | ( 1 << MSTR ) | ( 1 << SPR0 );// Enable SPI, Master, set clock rate fck/16
    }
    
    void transmitMasterSPI(unsigned char SPIData )    // Perform a SPI transmission
    {
        SPDR = SPIData;                                // Start transmission 
        while( !( SPSR & ( 1 << SPIF )));            // Wait for transmission complete 
    }
    
    void configADC (void)                        // Configure ADC
    {
        transmitMasterSPI( CommWR | CommFilter );
        transmitMasterSPI( updateRateNoCHOP315Hz );
        
        transmitMasterSPI( CommWR | CommMode );
        transmitMasterSPI( BaseMode );    
        
        transmitMasterSPI( CommWR | CommControl );
        transmitMasterSPI( BaseControl );
        
        while ( DRDY ) ;
    }
    
    void setChannel (unsigned char channel)        // Set ADC channel
    {
        channel <<= 4;
        
        transmitMasterSPI( CommWR | CommControl );
        transmitMasterSPI( channel | BaseControl );
        
        while ( DRDY ) ;
    }
    
    long ReadADC (void)                            // ADC reading
    {
        long ADCword = 0;                        // ADC current reading
        
        while ( DRDY ) ;
        
        transmitMasterSPI( CommRD | CommData );
        transmitMasterSPI( 0xFF );
        ADCword = SPDR;
        ADCword <<= 8;
        
        transmitMasterSPI( 0xFF );
        ADCword |= SPDR;
        ADCword <<= 8;
        
        transmitMasterSPI( 0xFF );
        ADCword |= SPDR;
        
        return ADCword;
    }
    
    long SetAndReadADC (unsigned char channel)    // Set & Read ADC at once
    {
        setChannel ( channel );
        return ReadADC ();
    }
    
    
    Are you sure? This action cannot be undone.
    Cancel
  • jobinvcm

    MemberDec 17, 2011

    I think for this much data transmission tranceivers are pretty useful try using CC2500 its really cool to work with that. if you want any help regarding that i can .... any way best wishes..
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberDec 17, 2011

    jobinvcm
    I think for this much data transmission tranceivers are pretty useful try using CC2500 its really cool to work with that. if you want any help regarding that i can .... any way best wishes..
    CC2500 has some errata sheet and not able to make it working so i transferred to RFM70 and till date i have created more than 20 application based on RFM70. 😀
    Are you sure? This action cannot be undone.
    Cancel
  • jobinvcm

    MemberDec 17, 2011

    If you need any sample codes i can provide.. I still think that CC2500 is pretty much efficient than other tranceivers.. It has huge frequency specturm
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberDec 17, 2011

    jobinvcm
    If you need any sample codes i can provide.. I still think that CC2500 is pretty much efficient than other tranceivers.. It has huge frequency specturm
    Sure i will let you know but right now i found RFM70 equivalant to CC2500, But yes looking forward for other 434Mhz solutions from TI.
    Are you sure? This action cannot be undone.
    Cancel
  • alem124max

    MemberDec 19, 2011

    hi,
    welcome to this forum site, here u can find lots of things. For your questions you should refer to your parents and friends.
    Are you sure? This action cannot be undone.
    Cancel
  • alem124max

    MemberDec 23, 2011

    hi,
    I want programing codes for my accelerometer controlled robotic model and also want some tips how it will work and which programing language should i have to use.
    --------------
    #-Link-Snipped-#
    Are you sure? This action cannot be undone.
    Cancel
  • Harshad Italiya

    MemberDec 23, 2011

    alem124max
    hi,
    I want programing codes for my accelerometer controlled robotic model and also want some tips how it will work and which programing language should i have to use.
    --------------
    #-Link-Snipped-#
    How can anyone give you source code without knowing your application and hardware design? It's better that you share your code whatever effort you'd done and ask queries whenever you're facing problem rather than getting ready code, yes you can use some reference code. 😀
    Are you sure? This action cannot be undone.
    Cancel
  • Suresh Manickam

    MemberDec 26, 2011

    you will need 3
    Are you sure? This action cannot be undone.
    Cancel
Home Channels Search Login Register