Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.03.2016, 19:04   #1
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию FDD 5'25 моторколесо

Берем старый 5ти дюймовый дисковод за 2$, а именно mf501c-318mg
Нажмите на изображение для увеличения
Название: mf501c-318mg.jpg
Просмотров: 295
Размер:	142.2 Кб
ID:	3650
разбираем и видим статор с 30-ю полюсами и ротор с 20-ю магнитами.
Нажмите на изображение для увеличения
Название: start.jpg
Просмотров: 296
Размер:	217.6 Кб
ID:	3651
Придумываем и делаем схему управления с ATMega8, чтоб крутилось.
Нажмите на изображение для увеличения
Название: plate.jpg
Просмотров: 335
Размер:	166.7 Кб
ID:	3652
Нажмите на изображение для увеличения
Название: medium.jpg
Просмотров: 249
Размер:	189.4 Кб
ID:	3653
Нажмите на изображение для увеличения
Название: gotovo.jpg
Просмотров: 272
Размер:	227.0 Кб
ID:	3654
SprintLayout - 5.25.zip
Из него, у меня, получилось моторколесо. Ток потребления 400 мА, при питании от двух 18650 (7,2В). Тишина и габариты - супер, потребление и
тяга под вопросом. Китайский моторчик с редуктором при соизмеримом токе, но от 3 вольт и с редуктором даст больший момент. Однако, мой колесик легко переезжает через провода и ездит по ковру.
Нажмите на изображение для увеличения
Название: IMG_20160302_175314.jpg
Просмотров: 288
Размер:	186.4 Кб
ID:	3655
Нажмите на изображение для увеличения
Название: IMG_20160302_175357.jpg
Просмотров: 261
Размер:	164.3 Кб
ID:	3656


ATMega 8 всем управляет. PC0, PC1, PC2 - входы датчиков Холла (1116КП4) они по паспорту с триггером, но от 5ти вольт работают как обычные.
PB0-PB5 - управление MOSFET катушек статора.

Датчики Холла делают моторчик синхронным, с их помощью можно получить шесть положений ротора и соответственно задать 6 состояний (вектров) намагниченности статора. Они соответствуют нечетным строкам в таблице состояния порта PORT.B. Еще шесть векторов, я их называю виртуальными, создаются только двумя полюсами статора. Итого 12 векторов магнитного поля на один электрический оборот и в десять раз больше (120) на один механический оборот, полюсов ведь у нас не три а тридцать.
Нажмите на изображение для увеличения
Название: IMG_20160302_194314.jpg
Просмотров: 285
Размер:	176.8 Кб
ID:	3661
Колесо, на ощупь, почти не дергается. Под нагрузкой, и наверное благодаря подшипникам, с их густой смазкой, от дисковода, тележка едет как сало по сковороде! 8)) Когда раму с колесами рукой по полу катишь, прям удовольствие получаешь! (что они в смазку клали?)

Да, еще, на роторы/диски я наклеил полоски резины. На фото они уже есть, поэтому кажется что толщина ободка большая.
Диаметр колеса - 92мм. Толщина покрішки 9мм. Общая толщина двигателя - 24мм. После обработки может сократиться до 19 мм.

С платы выведены 4 проводочка. Два для питания и два сигнальных. Впринципе этого уже достаточно для управления. Езда вперед или назад, тормоз или качение в зависимости от состояния логических уровней на сигнальных проводах. Но хочется все же большего.
Имеем:
ATmega328 16МГц в качестве мастера
ATmega8 12МГц в качестве слейва
подтянутые к +5В линии аппаратного I2C

Как от мастера к слейву передать две переменные (bite), скажем DATA1 и DATA2. Поделитесь простейшим кодом плз.
Без всяких обработок ошибок и прочего. Только запись. В слейве интересно получить именно готовые переменные DATA1 и DATA2, а не
фразу: "...теперь читаешь состояние регистра TWCR и выходишь из прерывания." Я такого сделать не смог 8(

Последний раз редактировалось Disha; 06.10.2016 в 15:19.
Disha вне форума   Ответить с цитированием
Старый 06.10.2016, 15:18   #2
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

После небольшой переделки платы, переписывания программы и замены магнитов, колесо берет 200мА и управляется по I2C!! Пока правда оно только в одну сторону крутится, но скоростью можно управлять присылая ему нужное число от 100 до 255. Что характерно, потребление почти не зависит от нагрузки на колесо. Расходы на 1 устройство - 5-6$.
Disha вне форума   Ответить с цитированием
Старый 07.10.2016, 01:05   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: FDD 5'25 моторколесо

КПД не измерял?
Admin вне форума   Ответить с цитированием
Старый 09.10.2016, 23:10   #4
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

Честно говоря, я слабо себе представляю как его можно измерить у тихоходного двигателя. При напряжении питания ниже 5ти вольт, вырубится контроллер, то-есть я даже потери в механике не смогу определить. Да и не важно это для "домашнего" робота. Мне важнее было:
1. Надежность
2. Компактность
3. Управляемость (тут кстати расход энергии увеличится)
и только потом
4. Энергоэффективность

Последний раз редактировалось Disha; 10.10.2016 в 11:00.
Disha вне форума   Ответить с цитированием
Старый 01.11.2016, 14:55   #5
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

ARDUINщики, подскажите такой код правильный для МАСТЕРА I2C, или Wire.beginTransmission можно только один раз в void setup() прописАть?
Код:
#include <Wire.h>
#include <CyberLib.h>  
const uint8_t sla_addr50 = 50;

void setup() 
{
Wire.begin();         // подключиться к i2c как ведущий
pinMode(13, OUTPUT);
D11_Out;  D11_Low;    //динамик  
randomSeed(A6_Read); //Получить случайное значение   
for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение готовности робота    
}

void loop() 
{
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  Wire.beginTransmission(sla_addr50); // передать на устройство 0x50
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.endTransmission(); // остановить передачу
  delay(5000);

  digitalWrite(13, LOW);   // turn the LED on (HIGH is the voltage level)
  Wire.beginTransmission(sla_addr50); // передать на устройство 0x50
  Wire.write(0x00);    // передать один байт 0х00
  Wire.write(0x00);    // передать один байт 0х00
  Wire.write(0x00);    // передать один байт 0х00
  Wire.endTransmission(); // остановить передачу
  delay(5000);

  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  Wire.beginTransmission(sla_addr50); // передать на устройство 0x50
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.write(0xFF);    // передать один байт 0хFF - 255
  Wire.endTransmission(); // остановить передачу
  delay(5000);

  digitalWrite(13, LOW);   // turn the LED on (HIGH is the voltage level)
  Wire.beginTransmission(sla_addr50); // передать на устройство 0x50
  Wire.write(0x00);    // передать один байт 0х00
  Wire.write(0x00);    // передать один байт 0х00
  Wire.write(0x00);    // передать один байт 0х00
  Wire.endTransmission(); // остановить передачу
  delay(5000);
  
}

Последний раз редактировалось Disha; 01.11.2016 в 15:11.
Disha вне форума   Ответить с цитированием
Старый 01.11.2016, 16:51   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: FDD 5'25 моторколесо

Вопрос не понятен, что один раз прописать?
Admin вне форума   Ответить с цитированием
Старый 01.11.2016, 17:29   #7
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

Я не лучший програмист....
1. Wire.endTransmission(); - на самом деле и есть команда к передаче всего что было объявлено ранее.
2. Wire.begin(); - инициализировали шину
3. Wire.beginTransmission(sla_addr50); - что кроме адреса "слейва" определяет в приведенном примере? Можно этого не делать в каждом сеансе передачи?
Disha вне форума   Ответить с цитированием
Старый 01.11.2016, 17:32   #8
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

СТОП, вопрос снимаю. Пока писАл сам все понял. Или не все......

Последний раз редактировалось Disha; 01.11.2016 в 17:34.
Disha вне форума   Ответить с цитированием
Старый 01.11.2016, 17:55   #9
Disha
Junior Member
 
Регистрация: 02.03.2016
Адрес: Киев
Возраст: 52
Сообщений: 11
Вес репутации: 0
Disha is an unknown quantity at this point
По умолчанию Re: FDD 5'25 моторколесо

Admin, если используем аппаратный I2C на Меге-8 - это PC4 и PC5 програмно "подтянутые" к Vcc
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

// State: Bit6=T Bit5=P Bit4=P Bit3=T Bit2=T Bit1=T Bit0=T
PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
, остальные "пины" PORT_C можно использовать как вход? У меня при подключении "слейва" SCL и SDA (PC4 и PC5) получаются на осцилогофе == 0!!!!!!!!!
Disha вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 4 (пользователей: 0 , гостей: 4)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:05. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика