Jump to content

Firmware


jayjay23

Recommended Posts

On 21/06/2016 at 2:46 PM, electric_vehicle_lover said:

- the baudrate is 115200 bits/s

Pus on the screenshot
data bits: 5
Stop: 1
Parity: none

 

Thank you haha :D

Edited by RolluS
  • Upvote 1
Link to comment
Share on other sites

So, MicroWorks just announced the new 40A board version. I have 5 units of the 30B version, 2 of them I use on my own EUCs. I will use the 30B version for firmware developing but at some time I will jump to the 40A version.

Everyday I learn and learn more about the motor control and I have more experiences with the boards - I just finished my MOD to add a RGB LED strip to my EUC with the 30B board:

 

 

  • Upvote 3
Link to comment
Share on other sites

On 4.7.2016 at 5:58 PM, lizardmech said:

It has an on board 150V linear regulator to power all the IC.

Which linear regulator is that? I just posted on another topic about the Microworks 60V -> 12V -converter, as it looked like it was linear from the photo (no inductor in sight), but right as I posted that, electric_vehicle_lover posted a link to the product page, which showed the inductor hidden behind a capacitor in the original picture (so it's a switcher) :P I just ordered a few TL783's (125V linear regulator) about a week ago, just wondering what other options there are. I suspect you can't draw much current from those, if the voltage is high, or at least need a huge heatsink, as the regulator needs to drop a lot of voltage...

I was thinking of using the regulators to drop the voltage for a voltage-display I plan on using on my wheel (it can display 0-100V, but needs a separate 4-32V input to work, so I though I'd drop the battery voltage through a small regulator, instead of adding a larger switching buck-converter). No idea how much current it uses though, probably fairly little, so a basic TO-220 heatsink should do..?

Edited by esaj
shower -> showed :P
  • Upvote 1
Link to comment
Share on other sites

10 hours ago, esaj said:

I just ordered a few TL783's (125V linear regulator) about a week ago, just wondering what other options there are. I suspect you can't draw much current from those, if the voltage is high, or at least need a huge heatsink, as the regulator needs to drop a lot of voltage..

Same one I used, you can actually go higher than 125, it's 125V + the output voltage. It outputs 700mA but that is quite a bit for powering other IC, large gate drivers only use something like 50mA continuously. The large 4A or 5A outputs are only tiny pulses with power taken from capacitors.

You can probably step down in multiple phases and add parallel ones to deal with more voltage and current. 

  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...
On 16/11/2015 at 0:13 AM, esaj said:

 Here's a long, (probably) related response about a regenerative braking question which explains what happens in different situations (although it only uses a single half-bridge for 1-phase motor, but I think similar stuff is going on with 3-phase motor): http://electronics.stackexchange.com/a/56187

Very interesting, thanks @esaj.

@Everyone please: how would regenerative braking work with a plenty charged battery, say if I live uphill?
Where does the energy go (heat in motor, in mosfet, etc..) ? 

Link to comment
Share on other sites

Yes IMO. You can look at the VESC firmware to see what it does when the battery voltage is MAX.

My Smart electric car disables the electric brakes when the battery is fully charged - I need to ride about 5kms for it to enable the electric brakes - and this information is on the User Manual.

  • Upvote 1
Link to comment
Share on other sites

Thanks.

Smart is a nice car! We own one, Cabrio 2002, gasoline. I've tried the electric model at "Mondial de l'Automobile", a big car show at Paris, France. I've loved it but damn to much for our budget. Sorry for OT and thanks for the behavior. The fact is that a wheel does not have mechanical brakes.

Link to comment
Share on other sites

OK here we go (https://github.com/vedderb/bldc/tree/cb2a205cb8f99f9dd5a75d7a1606394b6c2cf58f)

m_conf.l_max_vin = 57; //volts

void mc_interface_mc_timer_isr(void) {
ledpwm_update_pwm(); // LED PWM Driver update
const float input_voltage = GET_INPUT_VOLTAGE();
// Check for faults that should stop the motor
static int wrong_voltage_iterations = 0;
if (input_voltage < m_conf.l_min_vin || input_voltage > m_conf.l_max_vin) {
wrong_voltage_iterations++;
if ((wrong_voltage_iterations >= 8)) {
mc_interface_fault_stop(input_voltage < m_conf.l_min_vin ?
FAULT_CODE_UNDER_VOLTAGE : FAULT_CODE_OVER_VOLTAGE);
}
} else {
wrong_voltage_iterations = 0;
}

void mc_interface_fault_stop(mc_fault_code fault) {
 if (mc_interface_dccal_done() && m_fault_now == FAULT_CODE_NONE) {
  // Sent to terminal fault logger so that all faults and their conditions
  // can be printed for debugging.
[...]
fdata.voltage = GET_INPUT_VOLTAGE();

[...]
}

m_ignore_iterations = m_conf.m_fault_stop_time_ms;
switch (m_conf.motor_type) {
case MOTOR_TYPE_BLDC:
case MOTOR_TYPE_DC:
mcpwm_stop_pwm();
break;

case MOTOR_TYPE_FOC:
mcpwm_foc_stop_pwm();
break;

default:
break;
}
m_fault_now = fault;
}


Motor simply stop in case of over voltage.

Braking set duty cycle to 0.0 and apply current.

* @param dutyCycle* The duty cycle in the range [-MCPWM_MAX_DUTY_CYCLE MCPWM_MAX_DUTY_CYCLE]
* If the absolute value of the duty cycle is less than MCPWM_MIN_DUTY_CYCLE,
* the motor phases will be shorted to brake the motor.

 I can't find differences in braking according to battery state. so I would guess here we just have a cutoff on over voltage.

Edited by RolluS
  • Upvote 1
Link to comment
Share on other sites

So riding my EGG EUC yesterday, the ambient temperature were around 35ºC and I were riding slowly maybe for 15 minutes (I were looking for PokeStops and Pokemons - yes, using EUC for this is great!!). The EUC started to beep and tilted back the pedals:

https://github.com/EGG-electric-unicycle/documentation/wiki/MicroWorks-30B4---30km-h-controller-board-with-bluetooth#max-temperature-protection

Max temperature protection

When the temperature achieve 65ºC, the EUC will make 2 quick beeps and tilt back the pedals. Here is a screenshot showing the app and the temperature on that situation:
30B4-max_temperature_alert.png

There is no temperature sensor on the board. I believe the system uses the STM32F103 internal temperature sensor.

Edited by electric_vehicle_lover
Link to comment
Share on other sites

On 30B4 for EUC, there is no tilt back for MAX speed, just beeps. For MAX temperature, there is tilt back and beeps.

VESC firmware, for instance, have 2 thresholds for temperature. 1st will limit the current that should lower the temperature and the 2nd and higher one will shutdown the motor - here is the code:

#define MCCONF_L_LIM_TEMP_FET_START        80.0    // MOSFET temperature where current limiting should begin
#define MCCONF_L_LIM_TEMP_FET_END        100.0    // MOSFET temperature where everything should be shut off

/**
 * Update the override limits for a configuration based on MOSFET temperature etc.
 *
 * @param conf
 * The configaration to update.
 */
static void update_override_limits(volatile mc_configuration *conf) {
    const float temp = NTC_TEMP(ADC_IND_TEMP_MOS2);

    // Temperature
    if (temp < conf->l_temp_fet_start) {
        conf->lo_current_min = conf->l_current_min;
        conf->lo_current_max = conf->l_current_max;
    } else if (temp > conf->l_temp_fet_end) {
        conf->lo_current_min = 0.0;
        conf->lo_current_max = 0.0;
        mc_interface_fault_stop(FAULT_CODE_OVER_TEMP_FET);

https://github.com/vedderb/bldc/blob/master/mc_interface.c

  • Upvote 1
Link to comment
Share on other sites

I had my controller running on instaspin, tried VESC software and it destroyed the entire thing the first time. I had a 5A current limit but it still allowed a total short to the point the entire board and battery pack was destroyed and on fire. 

  • Upvote 2
Link to comment
Share on other sites

7 hours ago, HunkaHunkaBurningLove said:

So how is your skateboard running?  Got any video?  B)  What happens if you go too fast on it, does the power cut out making the front hit the pavement?

I haven't ran it with the new setup yet (batteries, deck).

Here is a clip of myself on the board about a week after receiving it: 

Here is a channel with all videos I've found about same skateboard as mine:

Sorry for OT @electric_vehicle_lover.

@electric_vehicle_lover, @HunkaHunkaBurningLove.

When I go above max speed with my 30B, 2 things may happen:

  • Battery BMS cut off (now it is cancelled by a jump cable)
  • Nose dive because battery hasn't enough power to help the motor recover.
  • Both case there are beeps before

That's a feeling/real life testing, no science here to verify.

  • Upvote 1
Link to comment
Share on other sites

6 hours ago, lizardmech said:

I had my controller running on instaspin, tried VESC software and it destroyed the entire thing the first time. I had a 5A current limit but it still allowed a total short to the point the entire board and battery pack was destroyed and on fire. 

That doesn't count -- people are using VESC on their electric skate board and catching Pokémons!!

 

Edited by electric_vehicle_lover
Link to comment
Share on other sites

I have good news about MicroWorks 30B4 board -- firmware can be programmed by Bluetooth app!!!

How I got there?
- I were trying to connect to the board using SWD, to start trying a "blink" firmware. I have a testing firmware using ChibiOS RTOS, the same RTOS used by VESC firmware - if I want to port VESC firmware, I want to start using ChibiOS.
I verified that SWD wasn't working, even if I tested in some boards I have here. SWD works on gen1 boards but not gen2 (30B4) boards. I verified that the 3 pins connections were correct. Then I searched on google and found someone reporting the same and turns out that SWD can be disable in firmware with this code:

  /* disable SWJ debug port - comment if you are using JTAG */
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

So, I guess original firmware disable SWD. Then I verified that STM32F103 can boot in a few modes: boot to flash firmware, where the SWD is disabled on original firmware or boot to STM bootloader by UART. The boot0 pin = 3.3V enabe booting from STM bootloader and I verified that boot0 pin is on the UART Bluetooth module header, with label "BO".
After I just connected a wire from the same header, to make boot0 pin = 3.3V and then the SWD worked!! -- see the picture.

Although I didn't tested, I am pretty sure is possible to flash the firmware using the Bluetooth serial port - I guess is a matter to connect the STM app to flash firmware to the PC serial port, after pairing the Bluetooth module to PC.

When we have a working firmware, we can include on the EGG Android app a feature to flash the board firmware - so the user don't need nothing connect any wires or buy any programmer to flash EGG firmware :-)

And by the way, the EGG app is moving forward. Yesterday for the first time, Patrícia were able to connect to 30B4 board over Bluetooth and read all the information that is sent. The code is on Github.

30B4_boot_firmware_bluetooth.jpg

@Jessica Wu @Rein-tech @Lz Lee

Edited by electric_vehicle_lover
  • Upvote 3
Link to comment
Share on other sites

1 hour ago, electric_vehicle_lover said:

I have good news about MicroWorks 30B4 board -- firmware can be programmed by Bluetooth app!!!

How I got there?
- I were trying to connect to the board using SWD, to start trying a "blink" firmware. I have a testing firmware using ChibiOS RTOS, the same RTOS used by VESC firmware - if I want to port VESC firmware, I want to start using ChibiOS.
I verified that SWD wasn't working, even if I tested in some boards I have here. SWD works on gen1 boards but not gen2 (30B4) boards. I verified that the 3 pins connections were correct. Then I searched on google and found someone reporting the same and turns out that SWD can be disable in firmware with this code:

  /* disable SWJ debug port - comment if you are using JTAG */
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

So, I guess original firmware disable SWD. Then I verified that STM32F103 can boot in a few modes: boot to flash firmware, where the SWD is disabled on original firmware or boot to STM bootloader by UART. The boot0 pin = 3.3V enabe booting from STM bootloader and I verified that boot0 pin is on the UART Bluetooth module header, with label "BO".
After I just connected a wire from the same header, to make boot0 pin = 3.3V and then the SWD worked!!

Although I didn't tested, I am pretty sure is possible to flash the firmware using the Bluetooth serial port - I guess is a matter to connect the STM app to flash firmware to the PC serial port, after pairing the Bluetooth module to PC.

When we have a working firmware, we can include on the EGG Android app a feature to flash the board firmware - so the user don't need nothing connect any wires or buy any programmer to flash EGG firmware :-)

30B4_boot_firmware_bluetooth.jpg

@Lz Lee

That's the basic stuff developers need to go ahead. You guys started to play a great Puzzle. 

What about an iOS App and a BT4/ LE module (e.g. CRS HM-12)? I could get a colleague to write code. Is all the information available to start developing an iOS App? An App can be adopted to any other board/ BT module.

Link to comment
Share on other sites

25 minutes ago, OliverH said:

What about an iOS App and a BT4/ LE module (e.g. CRS HM-12)? I could get a colleague to write code. Is all the information available to start developing an iOS App? An App can be adopted to any other board/ BT module.

One could combine forces with @Paco Gorina- he already has version 2.1 for iOs Bt4/le with the framework to support different wheels. For now "only" ninebot one is supported? - but including KS16 should not be too hard. Unfortionately i did not find time for this till now:

 

  • Upvote 1
Link to comment
Share on other sites

26 minutes ago, RolluS said:

wow @electric_vehicle_lover this is a really great news !

Do you have paybeer?

I have now ;-) https://beerpay.io/casainho

4 hours ago, OliverH said:

That's the basic stuff developers need to go ahead. You guys started to play a great Puzzle. 

What about an iOS App and a BT4/ LE module (e.g. CRS HM-12)? I could get a colleague to write code. Is all the information available to start developing an iOS App? An App can be adopted to any other board/ BT module.

I am an Android user and people near me are also Android users, I guess because is "more Open" and also we can find cheap up to very expensive devices. We will continue to develop to Android but the information is shared so others can take advantage. We are available to help with the information we have.

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...