Реклама: Программа для переделки гироскутера.

Расширенный поиск      

Хочешь стать куратором любимой темы?

* Комментарии к новостям

7. SPeed Savage A10 48/26Ah, SPeed Savage A10 Dual 52/23,4Ah, SPeed Savage S10 dual (Электросамокаты) от MoRoman 8. Использование литий-титаната в гибридах в качестве тяговой батарейки (ВВБ) (Литий-титанатные аккумуляторы) от rusmax 9. Аккумуляторы Liitokala Литокала закос под известные бренды! Это обычно подделка! (Литий-ионные (Li-Ion) и литий-полимерные (Li-Pol) аккумуляторы) от NEOART 10. О зарядных устройствах и свинцовых АКБ от А до Я (по версии Kass) (Зарядные устройства для свинцовых аккумуляторов) от Serg 11. Дизайн электровелосипедов на базе Bosch (Электровелосипеды) от sidi78 12. Как ГАИ реагируют на электровелосипеды 8) (Анекдоты и флУДИЛКА) от wimax
Не нравится реклама? Пройдите простую регистрацию на форуме и не будете видеть рекламу.

Прочитано 2792 раз

0 Пользователи и 1 Гость просматривают эту тему.

23 Дек 2018 в 08:29
Прочитано 2792 раз
Оффлайн

verial

Россия, Москва Сообщений: 780



все это не мое а разработчика программы.
ветрогенератор из колеса от гироскутера

www.youtube.com/watch?time_continue=97&v=CReXwjuXxQ0

Этим опусом я начну и постараюсь довести до читателя полную структуру программы изменяющую гироскутер в любое иное изделие для нужд потребителя и вашей инженерной мысли.
Прежде всего хочу выразить благодарность за разработку а главное за выкладывание полной рабочей версии программы ссылка
если вы знаете английский напишите ему мое спасибо буду очень вам признателен :-)
ссылка

Что может программа:
1. Управление от RC передатчика ppm-sum в этом случае работают два колеса не зависимо друг от друга (вперед, назад, вправо и в лево).




2. Управление от джойстика необходим джойстик от видеоигры плейстейшен. (вперед,назад, вправо и в лево).


3. Управление переменным сопротивлением, вперед, назад и переключение скоростей информация предоставлена Viktor_7
ссылка

Подходит для самокатов и машинок можно ставить ограничение по скорости максимальная скорость 25 км час.

4. То что использую Я это управление arduino по протоколу uart.

5. Танковое управление от двух джойстиков организуется только при помощи двух контроллеров.

Выбирайте на ваше усмотрение.
Дальше больше  :exactly:
 
Сам контроллер гироскутера



Так как программа написана на языке С++ ее надо скомпилировать для так сказать волшебного превращения в прошивку для контроллера гироскутера.


рассмотрим настройку программы под свои проекты.
это файл в программе где вы делаете свои установки config.h

#pragma once
#include "stm32f1xx_hal.h"

// ############################### Менять данные запрещено 100% выход из строя контроллера ну или его не работа

#define PWM_FREQ         16000      // PWM частота 16 кГц
#define DEAD_TIME        32         // PWM deadtime

#define DELAY_IN_MAIN_LOOP 5        // in ms. default 5. it is independent of all the timing critical stuff. do not touch if you do not know what you are doing.

#define TIMEOUT          5          // number of wrong / missing input commands before emergency off

В верху шапка программы здесь менять ничего не рекомендуется
в низу само тело установки, рассмотрим его более детально.




// ############################### GENERAL ###############################

// How to calibrate: connect GND and RX of a 3.3v uart-usb adapter to the right sensor board cable (be careful not to use the red wire of the cable. 15v will destroye verything.). if you are using nunchuck, disable it temporarily. enable DEBUG_SERIAL_USART3 and DEBUG_SERIAL_ASCII use asearial terminal.

// Battery voltage calibration: connect power source. see <How to calibrate>. write value nr 5 to BAT_CALIB_ADC. make and flash firmware. then you can verify voltage on value 6 (devide it by 100.0 to get calibrated voltage).
#define BAT_CALIB_REAL_VOLTAGE        43.0       //   установить напряжение измеренное тестером на вашем аккумуляторе  (в данный момент используется 43 вольта)

#define BAT_CALIB_ADC                 1704       // BAT_CALIB_ADC -это калибровочный коэффициент для расчёта напряжения, т.е. число 1704 - это количество
                                                                          отсчётов, при подаче на вход делителя напряжения НАПРЯЖЕНИЯ = 43.0

#define BAT_NUMBER_OF_CELLS     10        // количество ячеек в аккумуляторе: 10s
#define BAT_LOW_LVL1_ENABLE     0         //   вкл/выкл звука при низком напряжении, 1 or 0
#define BAT_LOW_LVL1            3.6           //     пищит на этом уровне напряжения. [В/эл.]
#define BAT_LOW_LVL2_ENABLE     1     //       to beep or not to beep, 1 or 0
#define BAT_LOW_LVL2            3.5       //          your battery is almost empty. Charge now! [V/cell]
#define BAT_LOW_DEAD            3.37      //       undervoltage poweroff. (while not driving) [V/cell]

#define DC_CUR_LIMIT     15         // DC current limit in amps per motor. so 15 means it will draw 30A out of your battery. it does not disable motors, it is a soft current limit.

// Board overheat detection: the sensor is inside the STM/GD chip. it is very inaccurate without calibration (up to 45В°C). so only enable this funcion after calibration! let your board cool down. see <How to calibrate>. get the real temp of the chip by thermo cam or another temp-sensor taped on top of the chip and write it to TEMP_CAL_LOW_DEG_C. write debug value 8 to TEMP_CAL_LOW_ADC. drive around to warm up the board. it should be at least 20В°C warmer. repeat it for the HIGH-values. enable warning and/or poweroff and make and flash firmware.
#define TEMP_CAL_LOW_ADC        1655      // temperature 1: ADC value
#define TEMP_CAL_LOW_DEG_C      35.8      // temperature 1: measured temperature [В°C]
#define TEMP_CAL_HIGH_ADC       1588      // temperature 2: ADC value
#define TEMP_CAL_HIGH_DEG_C     48.9      // temperature 2: measured temperature [В°C]
#define TEMP_WARNING_ENABLE     0         // to beep or not to beep, 1 or 0, DO NOT ACTIVITE WITHOUT CALIBRATION!
#define TEMP_WARNING            60        // annoying fast beeps [В°C]
#define TEMP_POWEROFF_ENABLE    0         // to poweroff or not to poweroff, 1 or 0, DO NOT ACTIVITE WITHOUT CALIBRATION!
#define TEMP_POWEROFF           65        // overheat poweroff. (while not driving) [В°C]

#define INACTIVITY_TIMEOUT 8        // установка времени отключения если вы не используете включено устройство

// ############################### LCD DEBUG ###############################
 
Здесь вы включаете или выключаете работу дисплея ( дисплей 128х64 i2c ssd1306 или 1602 i2c
выводит  напряжение и обороты каждого колеса.

//#define DEBUG_I2C_LCD             // standard 16x2 or larger text-lcd via i2c-converter on right sensor board cable

// ############################### UART протокол ###############################

#define DEBUG_SERIAL_USART3         // right sensor board cable, disable if I2C (nunchuck or lcd) is used!
#define DEBUG_BAUD       115200     // UART
//#define DEBUG_SERIAL_SERVOTERM
#define DEBUG_SERIAL_ASCII          // "1:345 2:1337 3:0 4:0 5:0 6:0 7:0 8:0\r\n" сам протокол

// ############################### INPUT ###############################

// ###### CONTROL VIA UART (serial) ######
//#define CONTROL_SERIAL_USART2       // left sensor board cable, disable if ADC or PPM is used!

скорость передачи общения между контроллером и прдуиной
#define CONTROL_BAUD       19200    // control via usart from eg an Arduino or raspberry

эту строчку надо вписать в ваш скетч для управления ардуиной.
// for Arduino, use void loop(void){ Serial.write((uint8_t *) &steer, sizeof(steer)); Serial.write((uint8_t *) &speed, sizeof(speed));delay(20); }

// ###### использование PPM-SUMM######
// left sensor board cable. Channel 1: steering, Channel 2: speed.
//#define CONTROL_PPM                 // use PPM-Sum as input. disable DEBUG_SERIAL_USART2!
//#define PPM_NUM_CHANNELS 6          // количество каналов

// ###### CONTROL VIA TWO POTENTIOMETERS ######
// ADC-calibration to cover the full poti-range: connect potis to left sensor board cable (0 to 3.3V) (do NOT use the red 15V wire in the cable!). see <How to calibrate>. turn the potis to minimum position, write value 1 to ADC1_MIN and value 2 to ADC2_MIN. turn to maximum position and repeat it for ADC?_MAX. make, flash and test it.
#define CONTROL_ADC                 // use ADC as input. disable DEBUG_SERIAL_USART2!
#define ADC1_MIN 0                // min ADC1-value while poti at minimum-position (0 - 4095)
#define ADC1_MAX 4095               // max ADC1-value while poti at maximum-position (0 - 4095)
#define ADC2_MIN 0                // min ADC2-value while poti at minimum-position (0 - 4095)
#define ADC2_MAX 4095               // max ADC2-value while poti at maximum-position (0 - 4095)

// ###### CONTROL VIA NINTENDO NUNCHUCK ######
// left sensor board cable. keep cable short, use shielded cable, use ferrits, stabalize voltage in nunchuck, use the right one of the 2 types of nunchucks, add i2c pullups. use original nunchuck. most clones does not work very well.
//#define CONTROL_NUNCHUCK            // use nunchuck as input. disable DEBUG_SERIAL_USART3!

// ############################### DRIVING BEHAVIOR ###############################

// inputs:
// - cmd1 and cmd2: analog normalized input values. -1000 to 1000
// - button1 and button2: digital input values. 0 or 1
// - adc_buffer.l_tx2 and adc_buffer.l_rx2: unfiltered ADC values (you do not need them). 0 to 4095
// outputs:
// - speedR and speedL: normal driving -1000 to 1000
// - weakr and weakl: field weakening for extra boost at high speed (speedR > 700 and speedL > 700). 0 to ~400

#define FILTER              0.1  // lower value == softer filter. do not use values <0.01, you will get float precision issues.
#define SPEED_COEFFICIENT   0.5  // higher value == stronger. 0.0 to ~2.0?
#define STEER_COEFFICIENT   0.5  // higher value == stronger. if you do not want any steering, set it to 0.0; 0.0 to 1.0
#define INVERT_R_DIRECTION
#define INVERT_L_DIRECTION
#define BEEPS_BACKWARD 1    // 0 or 1

//Turbo boost at high speeds while button1 is pressed:
//#define ADDITIONAL_CODE \
if (button1 && speedR > 700) { /* field weakening at high speeds */ \
  weakl = cmd1 - 700; /* weak should never exceed 400 or 450 MAX!! */ \
  weakr = cmd1 - 700; } \
else { \
  weakl = 0; \
  weakr = 0; }

// ###### МАЛЕНЬКАЯ МАШИНКА ######
// for better bobbycar code see: ссылка
// #define FILTER              0.1
// #define SPEED_COEFFICIENT   -1
// #define STEER_COEFFICIENT   0

// #define ADDITIONAL_CODE \
if (button1 && speedR < 300) { /* drive backwards */ \
  speedR = speedR * -0.2f;   \
  speedL = speedL * -0.2f; } \
else { \
  direction = 1; } \
if (button1 && speedR > 700) { /* field weakening at high speeds */ \
  weakl = speedR - 600; /* weak should never exceed 400 or 450 MAX!! */ \
  weakr = speedR - 600; } \
else { \
  weakl = 0; \
  weakr = 0; }

// ###### КРЕСЛО ######
// #define FILTER              0.05
// #define SPEED_COEFFICIENT   0.5
// #define STEER_COEFFICIENT   -0.2

// #define ADDITIONAL_CODE if (button1 && scale > 0.8) { /* field weakening at high speeds */ \
  weakl = speedL - 600; /* weak should never exceed 400 or 450 MAX!! */ \
  weakr = speedR - 600; } \
else {\
  weakl = 0;\
  weakr = 0;

// ############################### VALIDATE SETTINGS ###############################

#if defined CONTROL_SERIAL_USART2 && defined CONTROL_ADC
  #error CONTROL_ADC and CONTROL_SERIAL_USART2 not allowed. it is on the same cable.
#endif

#if defined CONTROL_SERIAL_USART2 && defined CONTROL_PPM
  #error CONTROL_PPM and CONTROL_SERIAL_USART2 not allowed. it is on the same cable.
#endif

#if defined DEBUG_SERIAL_USART3 && defined CONTROL_NUNCHUCK
  #error CONTROL_NUNCHUCK and DEBUG_SERIAL_USART3 not allowed. it is on the same cable.
#endif

#if defined DEBUG_SERIAL_USART3 && defined DEBUG_I2C_LCD
  #error DEBUG_I2C_LCD and DEBUG_SERIAL_USART3 not allowed. it is on the same cable.
#endif

#if defined CONTROL_PPM && defined CONTROL_ADC && defined CONTROL_NUNCHUCK || defined CONTROL_PPM && defined CONTROL_ADC || defined CONTROL_ADC && defined CONTROL_NUNCHUCK || defined CONTROL_PPM && defined CONTROL_NUNCHUCK
  #error only 1 input method allowed. use CONTROL_PPM or CONTROL_ADC or CONTROL_NUNCHUCK.
#endif

есть еще один файл установки main  но он для продвинутых пользователей его я разберу позже.




забегу немного в перед эта прошивка ссылка работает с RPiZeroW платформа для робота.


Пишите, спрашивайте что знаю то отвечу.
« Последнее редактирование: 16 Мар 2019 в 13:10 от verial »
Сообщение понравилось: inetchik, ЭФЭ, User_944, kor, rrumit, MRN76

24 Дек 2018 в 16:32
Ответ #1
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
#define BAT_CALIB_ADC                 1704       // adc-value measured by mainboard (value nr 5 on UART debug output)
Не совсем понятна эта строка. Калибровка батареи? Что означает цифра  1704  ?

25 Дек 2018 в 07:43
Ответ #2
Оффлайн

verial

Россия, Москва Сообщений: 780
#define BAT_CALIB_ADC                 1704       // adc-value measured by mainboard (value nr 5 on UART debug output)
Не совсем понятна эта строка. Калибровка батареи? Что означает цифра  1704  ?
АЦП максимум может выдать 4096 отчётов, которое равно максимальному напряжению 3,3 вольта, а 1704 это где-то 1,39 вольт на входе АЦП.
« Последнее редактирование: 25 Дек 2018 в 07:55 от verial »

26 Дек 2018 в 08:12
Ответ #3
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
Если я правильно понял, - на 10 ноге STM32 происходит контроль АКБ через делители из сопротивлений 15кОм + 15кОм + 1кОм. При напряжении питания 43Вольта на десятой ноге контроллера окажется около 1.387 Вольт. (43/31=1,387).
Т.е. плату для калибровки придётся дважды прошивать? Сначала прошить авторский вариант, затем подать точную напругу 43 Вольт, через UART считать данные ADC, изменить значение BAT_CALIB_ADC в новый config  и повторно прошить?

27 Дек 2018 в 10:17
Ответ #4
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
я просто пишу данные аккумулятора там где указал за место 43 вольт и все.
Мало данных для калибровки. Для каждой материнской платы нужны индивидуальные калибровочные коэффициенты. Вчера полвечера переводил и гуглом и яндексом. Попробую объяснить.
1 подключить  адаптер UART-USB к контактам GND, RX, и 3.3 v. и программа terminal на компьютере. Раскрыть  DEBUG_SERIAL_USART3 и DEBUG_SERIAL_ASCII. Все аварийные режимы и и бипперы в конфиге в положение OFF или 0.
2 включить материнскую плату. Считанные терминальной программы данные прописать в BAT_CALIB_ADC , реальное напряжение на АКБ вписать в BAT_CALIB_REAL_VOLTAGE.
3: С помощью термопары или иных датчиков температуры замерить  температуру корпуса в цельсии, вписать в TEMP_CAL_LOW_DEG_C . Данные с терминальной программы вписать в TEMP_CAL_LOW_ADC .
 Разогреть ( феном) корпус контроллера до 45..50 градусов и вписать реальную температуру в цельсиях и данные с терминальной программы в TEMP_CAL_HIGH_DEG_C и TEMP_CAL_HIGH_ADC соответственно.
_____
Т.к. корпус контроллера окружен радиатором, он же и будет являться температурным датчиком всего устройства. Для калибровки необходимо указать два значения, минимум ( комнатная температура) и макс ( разогретый феном до 45..50 гр.). Этого достаточно, чтобы программа сама вычислила предельную температуру в более 60 гр.
4: В случае применения аналоговой ручки газа или джойстика положение минимум и максимум вписать данные от терминальной программы в значении ADC1_MIN и ADC1_MAX соответственно.

27 Дек 2018 в 10:21
Ответ #5
Оффлайн

verial

Россия, Москва Сообщений: 780
4: В случае применения аналоговой ручки газа или джойстика положение минимум и максимум вписать данные от терминальной программы в значении ADC1_MIN и ADC1_MAX соответственно.
использую только эти параметры остальное считаю малоэффективным.

27 Дек 2018 в 11:49
Ответ #6
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
, да. Можно конечно выключить (программно) пищалку контроля аккума и от перегрева ( у автора они как раз отключены по умолчанию. Включаются после обязательной калибровки). Но, зато знать, как это можно включить и контролировать.
Ведь, разобрамшись в каждой строке конфига, это же за@бись.

Добавлено 27 Дек 2018 в 11:54
______
Пока я в качестве наблюдателя, т.к. в доме стройка и компьютер с гироскутером по разным углам.
Вопрос:
Что за терминальная программа к адаптеру  UART- USB? Дайте пожалуйста ссылку на почитать.
« Последнее редактирование: 27 Дек 2018 в 11:58 от ЭФЭ »

27 Дек 2018 в 15:40
Ответ #7
Оффлайн

verial

Россия, Москва Сообщений: 780
, да. Можно конечно выключить (программно) пищалку контроля аккума и от перегрева ( у автора они как раз отключены по умолчанию. Включаются после обязательной калибровки). Но, зато знать, как это можно включить и контролировать.
Ведь, разобрамшись в каждой строке конфига, это же за@бись.

Добавлено 27 Дек 2018 в 11:54
______
Пока я в качестве наблюдателя, т.к. в доме стройка и компьютер с гироскутером по разным углам.
Вопрос:
Что за терминальная программа к адаптеру  UART- USB? Дайте пожалуйста ссылку на почитать.
ссылка
Сообщение понравилось: ЭФЭ

09 Янв 2019 в 12:38
Ответ #8
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
Как именно реализована задняя скорость и лимит скоростей?
Задняя скорость включается путем замыкания ADC1 на общую (масса, GND) и активируется после установки ручку газа на минимум. И имеет пониженную максимальную скорость. Вместо переключателя скорости из резистивных делителей можно временно подключить один переменный резистор. Придётся лишь пометить на  на ручке четыре сектора (опытным путем). Включателя задней скорости в этом случае не уснанавливать. В минимальном положении ручки резистора и есть задний ход.
« Последнее редактирование: 09 Янв 2019 в 12:48 от ЭФЭ »

09 Янв 2019 в 15:14
Ответ #9
Оффлайн

VITAMIN1

Россия, Москва Сообщений: 215
Тоесть там не на постоянную идет переключение. А просто импульс.


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

У меня сейчас управление с левого уарта, под педаль газа. Питание на педаль отведено с центра платы, там где программатор цепляется. Если попробовать чтото другое прошить будут проблемы?


09 Янв 2019 в 15:48
Ответ #10
Оффлайн

verial

Россия, Москва Сообщений: 780
при постоянном ограничении скорости нужно на ацп подавать соответствующий сигнал постоянно.
если вы прошиваете прошивку с другим конструктивом то конечно надо подключать входа и выхода к вашей прошивки.

09 Янв 2019 в 16:28
Ответ #11
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
Странно. На данный момент у меня кроме курка к плате не подведено ничего.
Если ADC1 на воздухе, в моём случае работа была на второй скорости. Подключи два сопротивления по 1 кОм последовательно к 3.3v и массой. Средняя точка к входу ADC. Туда же и кнопку на массу. Будет максимальная скорость вперёд и задний ход кнопкой.

09 Янв 2019 в 18:31
Ответ #12
Оффлайн

verial

Россия, Москва Сообщений: 780
это все надо устанавливать в сетапе.

09 Янв 2019 в 20:45
Ответ #13
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61
, прошивка от Viktor_7. Если на входе ADC1  1/2Uпит. (делитель из двух одинаковых последовательных резистора) гироскутер имеет скорость с максимальным лимитом.

10 Янв 2019 в 00:35
Ответ #14
Оффлайн

VITAMIN1

Россия, Москва Сообщений: 215
, я медик по образованию. В электричестве понимаю только схемы картинки)))

Про два сопротивления и их номинал понял. А вот куда цеплять и как нет.

И это наверное касается прошивки с гикхаба. У меня не она.

Сейчас нет свободной платы для эксперимента. Да и резисторов дома не валяется. Это минимум в чип и дип ехать. А со словами
делитель из двух одинаковых последовательных резистора
меня продавцы наверное пошлют далеко. Резисторы то разные бывают. Это я как бы понимаю. К сожалению изза пробелов в образовании могу только четкие указания понимать, маневр невозможен(((
Сейчас используемая прошивка дает около 10-12кмч на 36в при весе болид+райдер около 40кг.

« Последнее редактирование: 10 Янв 2019 в 00:40 от VITAMIN1 »

10 Янв 2019 в 00:53
Ответ #15
Оффлайн

VITAMIN1

Россия, Москва Сообщений: 215
У меня подключение к левому уарту.

Минус ручки газа к четвертому проводу, сигнальный провод к второму проводу, а плюс ручки к +3.3 вольт на плате(из самого верхнего пина разъёма для программирования)
Вроде так

10 Янв 2019 в 07:36
Ответ #16
Оффлайн

ЭФЭ

Россия, Уфа Сообщений: 61



Упрощённая схема включения ручки газа, кнопки "назад" и делителя на максимальную скорость для прошивки от Viktor_7.
« Последнее редактирование: 10 Янв 2019 в 09:17 от ЭФЭ »
Сообщение понравилось: VITAMIN1

10 Янв 2019 в 07:43
Ответ #17
Оффлайн

verial

Россия, Москва Сообщений: 780
1 ком +1 ком это минимальная скорость до 5 км час
 
так на верху у меня в посте фото как подключать от viktor-7 не пойму что там не понятного только это под его прошивку вперед и назад.
Один момент, схематическое решение должно быть обязательно привязано к программе а именно к файлу config если вы льете прошивку взятую из интернета то должна быть схема подключения если ее нет то у вас ничего не получиться максимум сожгете процессор так что давайте ссылку где вы скачали прошивку.
« Последнее редактирование: 16 Янв 2019 в 07:01 от verial »

 

Программа для расчета геометрии подвески велосипеда (хода, рычажности)(СИМУЛЯТОР

Автор smartbsvРаздел Полезные программы

Ответов: 18
Просмотров: 9118
Последний ответ 25 Фев 2018 в 17:56
от Vik 42bpm
XPD: программа для настройки контроллеров Infineon

Автор zapРаздел Полезные программы

Ответов: 710
Просмотров: 103951
Последний ответ 21 Дек 2018 в 00:18
от inetchik
Программа для расчета кол-ва банок в сборке

Автор vzhik777Раздел Источники питания

Ответов: 1
Просмотров: 308
Последний ответ 02 Июн 2018 в 17:39
от Stanislavchik
rattleCAD - программа для расчета геометрии велосипеда

Автор MAPAT1972Раздел Полезные программы

Ответов: 1
Просмотров: 1565
Последний ответ 22 Авг 2015 в 10:29
от Unhis
Программа для расчёта звёздочек

Автор syktРаздел Полезные программы

Ответов: 1
Просмотров: 6167
Последний ответ 15 Дек 2014 в 23:32
от 1924