roboforum.ru

Технический форум по робототехнике.

Разработка OR-STM32F1-DS

Правила форума
Правила раздела OpenRobotics

Re: Разработка OR-STM32-DS

Vooon » 07 авг 2011, 16:57


Re: Разработка OR-STM32-DS

=DeaD= » 07 авг 2011, 17:20

LC-фильтр перед МК ставить не будешь?

Re: Разработка OR-STM32-DS

Vooon » 07 авг 2011, 17:22

Нет. Его даже на аналог не имеет смысла здесь ставить.
Т.к. точный АЦП не реально получить в таком применении.

Re: Разработка OR-STM32-DS

Vooon » 15 авг 2011, 22:20

Добавил индикатор питания.
Отправил в производство (резонит).
Уже в пятницу должны быть, но вот сборка подождет до зарплаты.
Свадьба друга сожрала комплектуху...

Кстати, =DeaD=, какие транзисторы на мосты ставить?

Re: Разработка OR-STM32-DS

=DeaD= » 15 авг 2011, 22:38

Если ты про P+N, то практически любые в SO-8, я ставил IRF7309 последний раз.

Re: Разработка OR-STM32-DS

Vooon » 21 авг 2011, 20:27

Получил платы. Внимательно рассмотрев обнаружил, что местами я ошибся с разводкой земли.
Работать должно, но могло лучше. На rev.1 изменений можно наскрести.
Но сначала соберу пару rev.0. Заказывал 4-е печатки.

Re: Разработка OR-STM32-DS

linvinus » 26 авг 2011, 16:27

Вот кстати открытый GPL can-usb адаптер http://www.mictronics.de/projects/usb-can-bus/

Re: Разработка OR-STM32-DS

Vooon » 28 авг 2011, 12:45

Собрал первый экземпляр. Работает. Прошивается через встроенный бутлоадер довольно быстро.

Код: Выделить всёРазвернуть
vovan@desinto:~/src/orfa2$ time stm32flash /dev/ttyUSB3 -vw orfa2.bin
stm32flash - http://stm32flash.googlecode.com/

Using Parser : Raw BINARY
Serial Config: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0414 (High-density)
RAM          : 64KiB  (512b reserved by bootloader)
Flash        : 512KiB (sector size: 2x2048)
Option RAM   : 15b
System RAM   : 2KiB

Wrote and verified address 0x08002bf8 (100.00%) Done.

Resetting device... done.

stm32flash /dev/ttyUSB3 -vw orfa2.bin  0,05s user 0,00s system 0% cpu 5,497 total
vovan@desinto:~/src/orfa2$ ls -l orfa2.bin
-rwxr-xr-x 1 vovan vovan 11256 2011-08-27 20:13 orfa2.bin*


Фотки с мобильного, крупно лучше не смотреть :)

Добавлено спустя 8 минут 2 секунды:
Сборка еще выявила еще одно - нужно подкорректировать дырки под большие клемники.
Эти (синие) вошли нормально, а вот разъемы нет.

Добавлено спустя 1 минуту 18 секунд:
Ну и монтажные дырки из стандартной библиотеки имеют слишком большой restrict.
Вложения
Фото163.jpg
Фото161.jpg

Re: Разработка OR-STM32-DS

=DeaD= » 28 авг 2011, 12:47

А травка на фоне хорошо получилась :crazy:

Какие функции уже проверены? Серво, GPIO, моторы, АЦП?

Re: Разработка OR-STM32-DS

Vooon » 28 авг 2011, 13:51

GPIO, USB.
Для серво нужно писать HAL.
АЦП проверить просто, тест есть, но нет потенциометра.
I2C - нет HAL LLD.

Добавлено спустя 14 минут 34 секунды:
USB CDC заработал сразу, что радует.
Нужно только как-то сделать дисконнект.
У leaflab на Maple были запущены одновременно DFU (прошивка) и CDC (tty).
Но такое работает только под линуксом (и возможно маком).
Винда не осиливает. Есть обходной путь - создание композитного драйвера.
Но у винды и мака здесь совершенно разный подход.
Поэтому мапловцы позже сделали традиционный бутлоадер.

Код: Выделить всёРазвернуть
vovan@desinto:~/src/chibios/trunk/testhal/STM32F1xx/USB_CDC$ minicom -D /dev/ttyACM0 


Добро пожаловать в minicom 2.5

ПАРАМЕТРЫ: I18n
Дата компиляции Feb  5 2011, 06:31:42.
Port /dev/ttyACM0

Нажмите CTRL-A Z для получения подсказки по клавишам


x�~x�~ ?
ch> info
Kernel:       2.3.3unstable
Compiler:     GCC 4.4.1
Architecture: ARMv7-M
Core Variant: Cortex-M3
Port Info:    Advanced kernel mode
Platform:     STM32 Performance Line High Density
Board:        Open Robotics OR-STM32-DS
ch> help
Commands: help exit info systime mem threads test
ch> systime
84388
ch> [A
[A ?
ch> systime
90479
ch> mem
core free memory : 58392 bytes
heap fragments   : 0
heap free total  : 0 bytes
ch> threads
    addr    stack prio refs     state time
200008D8 20000794   64    1  SLEEPING 0
20000C50 20000CBC    1    1     READY 104922
20000A58 20000B14   64    1  SLEEPING 0
20001348 20001A7C   64    1   CURRENT 2
ch> test

*** ChibiOS/RT test suite
***
*** Kernel:       2.3.3unstable
*** Compiler:     GCC 4.4.1
*** Architecture: ARMv7-M
*** Core Variant: Cortex-M3
*** Port Info:    Advanced kernel mode
*** Platform:     STM32 Performance Line High Density
*** Test Board:   Open Robotics OR-STM32-DS

----------------------------------------------------------------------------
--- Test Case 1.1 (Threads, enqueuing test #1)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.2 (Threads, enqueuing test #2)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.3 (Threads, priority change)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.4 (Threads, delays)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.1 (Semaphores, enqueuing)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.2 (Semaphores, timeout)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.3 (Semaphores, atomic signal-wait)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.4 (Binary Semaphores, functionality)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.1 (Mutexes, priority enqueuing test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.2 (Mutexes, priority inheritance, simple case)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.3 (Mutexes, priority inheritance, complex case)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.4 (Mutexes, priority return)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.5 (Mutexes, status)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.6 (CondVar, signal test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.7 (CondVar, broadcast test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.8 (CondVar, boost test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 4.1 (Messages, loop)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 5.1 (Mailboxes, queuing and timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.1 (Events, registration and dispatch)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.2 (Events, wait and broadcast)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.3 (Events, timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 7.1 (Heap, allocation and fragmentation test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 8.1 (Memory Pools, queue/dequeue)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 9.1 (Dynamic APIs, threads creation from heap)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 9.3 (Dynamic APIs, registry and references)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 10.2 (Queues, output queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
--- Score : 270046 msgs/S, 540092 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
--- Score : 213151 msgs/S, 426302 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
--- Score : 213151 msgs/S, 426302 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
--- Score : 926888 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
--- Score : 157880 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
--- Score : 230996 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
--- Score : 66635 reschedules/S, 399810 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
--- Score : 501440 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
--- Score : 655320 bytes/S                                                                       
--- Result: SUCCESS                                                                               
----------------------------------------------------------------------------                     
--- Test Case 11.10 (Benchmark, virtual timers set/reset)                                         
--- Score : 704312 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
--- Score : 886892 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
--- Score : 647188 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
--- System: 376 bytes
--- Thread: 72 bytes
--- Timer : 20 bytes
--- Semaph: 12 bytes
--- EventS: 4 bytes
--- EventL: 12 bytes
--- Mutex : 16 bytes
--- CondV.: 8 bytes
--- Queue : 32 bytes
--- MailB.: 40 bytes
--- Result: SUCCESS
----------------------------------------------------------------------------

Final result: SUCCESS
ch>     


Код: Выделить всёРазвернуть
vovan@desinto:~/src/chibios/trunk/testhal/STM32F1xx/USB_CDC$ svn diff
Index: main.c
===================================================================
--- main.c   (revision 3254)
+++ main.c   (working copy)
@@ -408,9 +408,9 @@
   (void)arg;
   chRegSetThreadName("blinker");
   while (TRUE) {
-    palClearPad(IOPORT3, GPIOC_LED);
+    palClearPad(GPIOB, GPIOB_LED);
     chThdSleepMilliseconds(500);
-    palSetPad(IOPORT3, GPIOC_LED);
+    palSetPad(GPIOB, GPIOB_LED);
     chThdSleepMilliseconds(500);
   }
}
@@ -436,7 +436,7 @@
    */
   sduObjectInit(&SDU1);
   sduStart(&SDU1, &serusbcfg);
-  palClearPad(GPIOC, GPIOC_USB_DISC);
+  //palClearPad(GPIOC, GPIOC_USB_DISC);

   /*
    * Shell manager initialization.
Index: Makefile
===================================================================
--- Makefile   (revision 3254)
+++ Makefile   (working copy)
@@ -54,7 +54,9 @@

# Imported source files and paths
CHIBIOS = ../../..
-include $(CHIBIOS)/boards/OLIMEX_STM32_P103/board.mk
+#include $(CHIBIOS)/boards/OLIMEX_STM32_P103/board.mk
+ORFA = $(CHIBIOS)/../../orfa2
+include $(ORFA)/boards/OR_STM32_DS/board.mk
include $(CHIBIOS)/os/hal/platforms/STM32F1xx/platform.mk
include $(CHIBIOS)/os/hal/hal.mk
include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F1xx/port.mk
@@ -62,7 +64,7 @@
include $(CHIBIOS)/test/test.mk

# Define linker script file here
-LDSCRIPT= $(PORTLD)/STM32F103xB.ld
+LDSCRIPT= $(PORTLD)/STM32F103xE.ld

# C sources that can be compiled in ARM or THUMB mode depending on the global
# setting.


Добавлено спустя 9 минут 40 секунд:
Ну и USART1 (RoboBUS). Моторы буду проверять позже. Там нужно правильно накодить, иначе сквозняк можно устроить.
Соотвестсвенно нужен лабораторный БП с защитой по току.

Добавлено спустя 9 минут 14 секунд:
Если конечно перейти на 105-й, то DFU бут писать не нужно будет и с CAN'ом проблем нет.
Но USB OTG не поддерживается (не известно когда будет, а device уже), возможно не хватит таймеров.

Re: Разработка OR-STM32-DS

linvinus » 28 авг 2011, 14:11

Vooon, отличная работа!
Мне только не понятно, а выводы управления встроенными драйверами двигателей на внешние выводы выедены? О как :)
В смысле возможно ли задействовать TIM1 для управления "внешним" драйвером?

Re: Разработка OR-STM32-DS

Vooon » 28 авг 2011, 14:14

TIM1 рулит и внутренним драйвером, и RoboMD2. Это все на разных каналах.

http://code.google.com/p/or-stm32-ds/so ... apping.txt
Код: Выделить всёРазвернуть
TIM1:
  mode: PWM
  CH1:  M0PWMP
  CH1N: M0PWMN
  CH2:  M1PWMP
  CH2N: M1PWMN
  CH3:  MDPWM1
  CH4:  MDPWM2

Re: Разработка OR-STM32-DS

linvinus » 28 авг 2011, 14:56

жаль :(, меня интересуют bldc это минимум три канала от одного таймера нужно.
Да и на форуме многие про bldc "думают", но как я понимаю, многих останавливает сложность реализации.

может можно завести через джамперы? пусть будет встроенный но и будет возможность подключения более сложных устройств.

Я искал доступные devboard без наворотов, голый контроллер 72Mhz и все выводы на разъёме. Таких нет.
Все что нибудь впиндурят дополнительно :(. Либо SRAM/NAND память, либо экран, либо SD карта.

А ведь простым смертным мешает только размер этого контроллера, в смысле спаять плату самому сложно, цена уже на уровне конкуренции с ардуино, а значит потенциальных покупателей может быть море.
Если правильно спозиционировать устройство.
"stm32 мега_боард - это ардуино второго поколения"

Re: Разработка OR-STM32-DS

Vooon » 28 авг 2011, 15:49

http://leaflabs.com/devices/maple/

Olimex STM32-H103, STM32-P103.

BLDC это хорошо, но не подходит для главного контроллера из линейки OR.
Я думал, что неплохо бы сделать умный драйвер для BLDC, но оно не запланировано.
Да и это требует серьезной проработки аналога, для меня это сложно.
Потом есть уже проекты, на форуме мелькали.

Вообще кажется у меня все CHn, CHnN выведены. Можно не паять мост, а заколхозить на разъем MD2.
Я заинтересован в тестировании rev.0, могу выделить одну плату.

Re: Разработка OR-STM32-DS

linvinus » 28 авг 2011, 16:09

О спасибо за ссылку, не там искал :(!

А что в ходит в понятие тестирование? У меня есть одна четырёх колёсная платформа без драйвера моторов (плата сгорела).
На на ней два двигателя два оптических энкодера и акселерометр.
+ осваиваю stm32 =)

По поводу bldc.
У меня решение следующее.
1) готовый мотор без сенсоров
2) Сенсоры установлены на плате, снаружи, 120 градусов, которая установлена на двигатель, толщина платы 3 мм (Увеличивает внешний диаметр мотора на 6мм).
3) на atmega168 собрал и сенсорное и безсенсорное управление.

Можно легко подобрать готовое решение на базе определённых комплектующих, для простых пользователей, мотор + датчики + драйвер.

Если подобрать подходящий редуктор то вообще зашибись будет.


cron
Rambler\'s Top100 Mail.ru counter