MC33970DW
- Войдите на сайт для отправки комментариев
Втр, 12/04/2011 - 23:05
Пытаюсь прикрутить данный девайс к Arduino NG (делаю стрелочный тахометр). Но почему-то никак не выходит, не хочет стрелка на шаговике двигаться, какие бы команды я не подавал. С SPI я до этого вообще не работал, поэтому не понимаю, в чём моя ошибка. Помогите советом, что я не так делаю?
#include <SPI.h> const int chipSelectPin = 10; void setup() { pinMode(chipSelectPin, OUTPUT); SPI.begin(); SPI.setDataMode(SPI_MODE1); SPI.setClockDivider(SPI_CLOCK_DIV16); SPI.setBitOrder(MSBFIRST); } void loop() { SPI.transfer(0b00000000); SPI.transfer(0b00000011); SPI.transfer(0b00100000); SPI.transfer(0b00000001); SPI.transfer(0b10000000); SPI.transfer(0b00000000); SPI.transfer(0b01001111); SPI.transfer(0b11111111); SPI.transfer(0b01101111); SPI.transfer(0b11111111); delay(1000); }
Схемку подключения MC33970DW к арде можно глянуть? Немного на пальцах что и как должно работать? И чтобы было более прозрачно и не пришлось изучать даташиты па этой микрухе )) можно подписать, сделать коменты, т.е. отсылаем команду и что должно произойти. Дело в том что если все команды вида SPI.transfer(0b01001111); это установка навого положения двигателя, то подозреваю что если что то и будет происходить то максиму увидим последнее значение arduino то команды отсылает гораздо быстрее че это может обработать двигатель и думаю скоросто обмена по spi тут нипричём.
на сколько я понял это драйвер стрелочных индикаторов, а не моторов. На выходе у него косинус и синус сигнал смещая эти сигналы получаем вращение на 360' максимум для стрелочника 340' думаю у вас проблема именно в том что вы используете мотор а не стрелочник. То.е. на выходе вы получате две фазы относительно друг друга на 90'. Прелесть такого драйвера заключена в том что вы получаете наиболее стабильные показания без инерционных вибраций. К тому же подавая цифровой сигнал получаете на выходе аналоговый.
Я тут тоже собираю информацию по изготовлению тахометра, для авто. но я решил делать цифровой с линейной и численной индикацией.
В том-то и дело, что вся связка - MC33970DW и два шаговика VID29-03P были выпаяны из газелевской приборной панели, где отлично работали, схему подключения скопировал оттуда. Да и в datasheet написано, что эта микросхема - Н-мостовой драйвер биполярных шаговых индикаторов.
Подключил я её как написано в SPI библиотеке: 10 - SCLK, 11 - MOSI, 12 - MISO, 13 - CS. Вывод Reset пробовал и в воздухе оставлять, и подключать к резету Atmega - разницы никакой.
Просто дело в том, что адреса регистров у этого контроллера находятся в байтах D15:D13, т.е. в первом старшем байте мы посылаем и адрес регистра, и часть данных. Мне вот это не нравится, но как по-другому, я не знаю.
Ну тогда да проблема наврядли в железе. Надо тоже библиотеку поковырять
Вот посмотри вот это, насколько я понял у тебя мега
On the Arduino Duemilanove and other ATmega168 / 328-based boards, the SPI bus uses pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK). On the Arduino Mega, this is 50 (MISO), 51 (MOSI), 52 (SCK), and 53 (SS). Note that even if you're not using the SS pin, it must remain set as an output; otherwise, the SPI interface can be put into slave mode, rendering the library inoperative.
Для разных arduino разные контакты подключения.
Да нет у него не мега а NG. SS на 10 ноге.
Подключил я её как написано в SPI библиотеке: 10 - SCLK, 11 - MOSI, 12 - MISO, 13 - CS. Вывод Reset пробовал и в воздухе оставлять, и подключать к резету Atmega - разницы никакой.
Что то тут не так. смтри 10 выввод это SS - вход на ведомых устройствах с помощью которого ведущий может инициировать обмен данными с периферийным устройством. Он может не использоваться. но должен быть прописан как вывод, у тебя это сделано.
так вот тебе надо подконектить таким образом арду к микре
дальше первое число ардуино второе микруха:
11 к 12,
12 к 11,
13 к 10,
вот так попробуй. Если тока я не напутал с MISO MOSI, но в любом случае 13 ножка арды должна идти к 10 на микре. Если я напутал с MISO MOSI то поменяй местами.
А вот ss вывод ардуины должен кажется идти к 9
Конечно же я неправильно написал, CS у меня на 10 ноге висел, а SCLK на 13. А вот MISO и MOSI я перепутал, забыл, что они крест-накрест идут. Правда, ни к чему это не привело