Building a 3d model on rhino5 of an axis head to run some tests

A longtime ago I’ve learned rhino at school and that’s the reason I used it for these task.

First I started by drawing a circle, than using offset curve I drew more concentric circles that I copied to a certain distance, by making a line and using mirror in the mid point of that line. From there i made more horizontal and vertical lines using some of the above tools, and used trim to take out the some parts off the lines leaving behind just some out lines do extrude my model.

>

Press Fit

I started my press fit task based on a triangle as base material I used some old 3mm acrylic from a store front.

2nd - some basic ideas I already have in mind…( at this point everything is changeable):

Motors - I intend to use dc motors for many reasons, the 1st one being they are more common, then it's easier to buy a used powerful one. And, as I recovered many encoders from hp printers, I can get the proper positioning feedback I need; and the 2nd reason is that I'm going to learn how to read and control input and output devices, nothing better than combine them both on my final project. With hi-torque, both stopped and in motion, good gear reduction, hi-durability and being available as cheap used parts, I found car window and windscreen wiper motors to be apparently ideal for my project…

output devices

For output device I choose a DC motor. To control it, I used my input-output board made at the input devices week. I started with Neal's “hello.H-bridge.44.DC.c” program, changing the pins and ports definitions according to my board, and uploaded it to the ATTiny44. The initial movements had little amplitude and high speed making it more a vibration. More tuning was needed to make it work. I tried various settings of delays and PWM_count to discover in what direction I had to make the changes, ending up with the program below. The result can be seen in video at the bottom.

//
//
// hello.H-bridge.44.DC.c
//
// H-bridge DC motor hello-world
//
// Neil Gershenfeld
// 11/18/12
//
// (c) Massachusetts Institute of Technology 2012
// Permission granted for experimental and personal use;
// license for commercial sale available from MIT.
//

#include <avr/io.h>
#include <util/delay.h>

#define output(directions,pin) (directions |= pin) // set port direction for output
#define set(port,pin) (port |= pin) // set port pin
#define clear(port,pin) (port &= (~pin)) // clear port pin
#define pin_test(pins,pin) (pins & pin) // test for port pin
#define bit_test(byte,bit) (byte & (1 << bit)) // test for bit set

#define on_delay() _delay_us(50) // PWM on time
#define fast_off_delay() _delay_us(1) // PWM fast off time
#define medium_off_delay() _delay_us(3) // PWM medium off time
#define slow_off_delay() _delay_us(5) // PWM slow off time
#define PWM_count 20000 // number of PWM cycles
#define cycle_count 5 // number of speed cycles

#define bridge_port PORTA // H-bridge port
#define bridge_direction DDRA // H-bridge direction
#define IN1 (1 << PA3) // IN1
#define IN2 (1 << PA2) // IN2

int main(void) {
//
// main
//
static uint16_t count;
static uint8_t cycle;
//
// set clock divider to /1
//
CLKPR = (1 << CLKPCE);
CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0);
//
// initialize H-bridge pins
//
clear(bridge_port, IN1);
output(bridge_direction, IN1);
clear(bridge_port, IN2);
output(bridge_direction, IN2);
//
// main loop
//
while (1) {
for (cycle = 0; cycle < cycle_count; ++cycle) {
//
// turn forward slow
//
clear(bridge_port, IN1);
set(bridge_port, IN2);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN2);
on_delay();
clear(bridge_port, IN2);
slow_off_delay();
}
//
// turn reverse slow
//
clear(bridge_port, IN2);
set(bridge_port, IN1);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN1);
on_delay();
clear(bridge_port, IN1);
slow_off_delay();
}
}
for (cycle = 0; cycle < cycle_count; ++cycle) {
//
// turn forward medium
//
clear(bridge_port, IN1);
set(bridge_port, IN2);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN2);
on_delay();
clear(bridge_port, IN2);
medium_off_delay();
}
//
// turn reverse medium
//
clear(bridge_port, IN2);
set(bridge_port, IN1);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN1);
on_delay();
clear(bridge_port, IN1);
medium_off_delay();
}
}
for (cycle = 0; cycle < cycle_count; ++cycle) {
//
// turn forward fast
//
clear(bridge_port, IN1);
set(bridge_port, IN2);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN2);
on_delay();
clear(bridge_port, IN2);
fast_off_delay();
}
//
// turn reverse fast
//
clear(bridge_port, IN2);
set(bridge_port, IN1);
for (count = 0; count < PWM_count; ++count) {
set(bridge_port, IN1);
on_delay();
clear(bridge_port, IN1);
fast_off_delay();
}
}
}
}

here we can see the controler making the motor turning back foward in difrent velocities.

see https://drive.google.com/folderview?id=0B-zSpF8Sy3QLM0pIZmw4c1lRb1k&usp=sharing for files

Guilherme Moreira | 18-01-2014 | 04:46 AM | Lisboa | Portugal | para Fab Academy 2014 (pt)