I have the MB102 mini usb one.
It keeps heating up really bad to the point that if i touch it, it's probably hot enough to burn or cause really bad discomfort.
Websites like that have rubbish info on the products. Does it come with any instructions?
My best guess is you need to lower the input voltage. Those regulators are linear mode of operation so any difference between the input voltage and the regulated voltage is pure heating loss.
Lets say the 5 volt regulator is one of these - http://www.ti.com/lit/ds/symlink/reg1117.pdf And if the input voltage is, a wild guess of, 12 volts, then the regulator is having to drop 7 volts. This creates 1.0 Watt of heating for every 1/7 = 143 mA of current. One Watt is about all that'll handle without a heat sink. And even that will get very hot.
Reducing the input voltage, say 6 volts, will make it a lot cooler. Or if you can use a strong USB supply, preferably from charger or hub, then that'll work by bypassing the 5 volt regulator altogether I'm guessing. I note there is jumpers to change to USB supply mode.
5v regulator is a AMS1117 5.0.
Have a 12v input on it.
I think i tried a 2amp usb power brick but nothing really ran at all.
Even tried directly on my computer, it ran but then froze after a few seconds.
Maybe the USB is auto select but is broken, we've had a few of those fail with the Prop2 testing. Dunno, it's a lot of guessing from this end without any datasheet or instruction manual, or even a definite picture of the thing.
Okay, I've found a schematic for one of the models - http://www.handsontec.com/dataspecs/mb102-ps.pdf It has the USB 5V directly connected to the output of the 5 volt regulator. So no jumpered selecting. It's a case of only connect one supply at a time.
The 12 volt input has a plain silicon diode (1N4007) in series, which explains why they say 6.5 Volts minimum. Really should have been a Schottky diode instead.
There is a power button that needs pressed, even for the USB supply. It's double pole, so switches both inputs on/off. The green LED will light to indicate the supply and push button are on.
It's the one on the lower right behind the character lcd.
Oh, that's quite a lot of gear. Might be too much. It can be measured with a multimeter inline with the 5 volts.
Maybe a good time to get a bench-top supply that replaces the MB102 and can tell you what is being used at all times, and has it's own adjustable limits.
That's a good idea from a money saving view. It's not cheap to buy a 10 A bench supply normally. 3 A is the common max for cheap ones.
However, the instructions in that video are all important. The AC cable will kill you if you aren't careful.
See he used blue "bootlace ferals" on those demo leads into the AC plug and the fixed 12V/5A supply. That prevents accidental fraying of the copper strands at the terminals. Again, can save your life. Soldering the wire ends into a solid conductor would be an alternative but not as reliable long term. In the finished unit he uses solid core conductors instead.
He made an important point of highlighting the green/yellow earthing wiring. This again is for your safety when operating the finished unit. Do not leave it out. It must be connected to all exposed metal of the enclosure. All AC powered equipment has this inside when exposed metal.
And make sure you check and check again you've got the pin order correct for three pin AC plug. Get that wrong and it can be lights out for you again. There is no second chances here.
This is actually work that requires qualified electrical worker. So teaching outside of registered educator will be illegal.
The final thing you should be doing, that he doesn't mention, is you should be verifying the earth conductor low resistance from the earth pin to the exposed metal ... and insulation high resistance of the AC actives pins to the earth pin and exposed metal. This needs a special insulation tester.
All that said, you can avoid the exposed AC conductors by using an external fixed voltage supply, like a laptop power brick, instead. An 18 volt brick would work well.
On another note: The worry, with using a switcher like this, is the level of electrical noise it might inject. The reason why all the cheap bench tops are limited to 3 amps is because that is a manageable amount for a linear regulator with a large heatsink. That way they don't have to use a switcher and risk it being too noisy.
Expensive bench tops I think use a combination of switcher, for the bulk of the voltage control, with a linear to drop down to the final noise free regulated output. Something like a PC motherboard can de-noise a switcher by throwing large amounts of capacitors at the problem. A bench top doesn't have that luxury because it has to provide a wide adjustable current limit. This is somewhat out of my knowledge so am guessing now though.
Ok, so, stick a pin in that for later.
Back to propgcc.
Trying to include the Propware SD libraries into my program, so that i can see about streaming a vgm for testing, and im getting this:
D : \Compilers\propgcc-win\bin\propeller-elf-g++.exe : d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../
../../propeller-elf/lib/cmm/short-doubles\libstdc++.a(eh_personality.o): In function `.LFB78':
At line:1 char:1
+ D : \Compilers\propgcc-win\bin\propeller-elf-g++.exe -I . -I D : \\Compi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (d:/compilers/pr...ction `.LFB78'::String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
/home
/teamcity/TeamCity/buildAgent/work/427a5678720f95ad/propeller-gcc/gcc4/libstdc++-v3/libsupc++/eh_personality.cc:362:
multiple definition of `___gxx_personality_sj0'
D : \\Compilers\\PropWare\\share\\PropWare\lib\cmm\\libpropware.a(PropWare.cpp.obj):(.text.__gxx_personality_sj0+0x0):
first defined here
d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: Propeller
Genesynth.elf section `.text' will not fit in region `hub'
d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: address 0xf5fc of
Propeller Genesynth.elf section `.bss' is not within region `hub'
d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: address 0xf5fc of
Propeller Genesynth.elf section `.bss' is not within region `hub'
d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: region `hub'
overflowed by 30208 bytes
collect2: ld returned 1 exit status
How big exactly is the SD card libararies?
PropWare::SD, PropWare::FatFS, and PropWare::FatFileReader.
I dont think it would be that big to overflow the hub ram... which is really weird...
It's not small, that's for sure. It's smaller than Simple's SD routines, but larger than fsrw. But if you're using CMM still, it shouldn't be overflowing by 30kB... a whole SD read/write program fits in ~26kB in LMM, and reading only fits in 21kB.
If you send me the code again I can take a look and help figure out what taking up all that space.
I'm not seeing the problem with the uploaded zip. I do see that there's a file missing: TrackStructs.h. But if I just delete that inclusion, it compiles fine (with my CMake script) to less than 20kB (as reported by propeller-elf-size, not the size of the file on disk).
I'm also not seeing any real usage of the SD card, just an instantiation of the SD card driver and FAT filesystem.
I'm looking through your PowerShell script for the first time now, trying to see if there's something there that could be causing a problem. I do notice you're actually using g++ for compiling the C++ code, instead of gcc. Since you're not using any of the C++ standard library, it shouldn't matter, but I'd recommend you compile everything with gcc. The only differences between the two are linker symbol names (doesn't matter) and the fact that g++ links against the C++ STL by default... and the Prop doesn't have space for it so you shouldn't be using it anyway
ok, so swapping to gcc + "-lm" instead of g++ still compiles.
Dont seem to be getting any errors about file space now which is weird.
Though getting issues with "___cxa_guard_acquire" and "___cxa_guard_release" in SPI::get_instance() for some reason.
For the TrackStructs.h, it's pretty much the same one from https://github.com/AidanHockey5/STM32_VGM_Player_YM2612_SN76489.
With you talking about it, i thought it would be because of it, though i have commented out the enums and variables at the bottom.
ok, so swapping to gcc + "-lm" instead of g++ still compiles.
Dont seem to be getting any errors about file space now which is weird.
Though getting issues with "___cxa_guard_acquire" and "___cxa_guard_release" in SPI::get_instance() for some reason.
For the TrackStructs.h, it's pretty much the same one from https://github.com/AidanHockey5/STM32_VGM_Player_YM2612_SN76489.
With you talking about it, i thought it would be because of it, though i have commented out the enums and variables at the bottom.
The guard_acquire and guard_release sounds familiar... but I don't remember what I did to resolve that. I'm not seeing any references to it in PropWare's source.
No need to use SPI::get_instance() if you don't want to though. It's just a "shortcut" for instantiating an SPI bus (it uses a local static variable inside the get_instance() function so that you get the same SPI instance everywhere throughout your code). You can achieve the same thing by just instantiating your own SPI bus and passing that in everywhere that you need.
Comments
My best guess is you need to lower the input voltage. Those regulators are linear mode of operation so any difference between the input voltage and the regulated voltage is pure heating loss.
Lets say the 5 volt regulator is one of these - http://www.ti.com/lit/ds/symlink/reg1117.pdf And if the input voltage is, a wild guess of, 12 volts, then the regulator is having to drop 7 volts. This creates 1.0 Watt of heating for every 1/7 = 143 mA of current. One Watt is about all that'll handle without a heat sink. And even that will get very hot.
Reducing the input voltage, say 6 volts, will make it a lot cooler. Or if you can use a strong USB supply, preferably from charger or hub, then that'll work by bypassing the 5 volt regulator altogether I'm guessing. I note there is jumpers to change to USB supply mode.
Have a 12v input on it.
I think i tried a 2amp usb power brick but nothing really ran at all.
Even tried directly on my computer, it ran but then froze after a few seconds.
Or reducing the 12 volts will work.
It's just plug and play.
It's the one on the lower right behind the character lcd.
The 12 volt input has a plain silicon diode (1N4007) in series, which explains why they say 6.5 Volts minimum. Really should have been a Schottky diode instead.
There is a power button that needs pressed, even for the USB supply. It's double pole, so switches both inputs on/off. The green LED will light to indicate the supply and push button are on.
Maybe a good time to get a bench-top supply that replaces the MB102 and can tell you what is being used at all times, and has it's own adjustable limits.
However, the instructions in that video are all important. The AC cable will kill you if you aren't careful.
See he used blue "bootlace ferals" on those demo leads into the AC plug and the fixed 12V/5A supply. That prevents accidental fraying of the copper strands at the terminals. Again, can save your life. Soldering the wire ends into a solid conductor would be an alternative but not as reliable long term. In the finished unit he uses solid core conductors instead.
He made an important point of highlighting the green/yellow earthing wiring. This again is for your safety when operating the finished unit. Do not leave it out. It must be connected to all exposed metal of the enclosure. All AC powered equipment has this inside when exposed metal.
This is actually work that requires qualified electrical worker. So teaching outside of registered educator will be illegal.
The final thing you should be doing, that he doesn't mention, is you should be verifying the earth conductor low resistance from the earth pin to the exposed metal ... and insulation high resistance of the AC actives pins to the earth pin and exposed metal. This needs a special insulation tester.
Expensive bench tops I think use a combination of switcher, for the bulk of the voltage control, with a linear to drop down to the final noise free regulated output. Something like a PC motherboard can de-noise a switcher by throwing large amounts of capacitors at the problem. A bench top doesn't have that luxury because it has to provide a wide adjustable current limit. This is somewhat out of my knowledge so am guessing now though.
Back to propgcc.
Trying to include the Propware SD libraries into my program, so that i can see about streaming a vgm for testing, and im getting this:
How big exactly is the SD card libararies?
PropWare::SD, PropWare::FatFS, and PropWare::FatFileReader.
I dont think it would be that big to overflow the hub ram... which is really weird...
If you send me the code again I can take a look and help figure out what taking up all that space.
It's really wierd.
Im using defines to basically section off testing areas, though that shouldnt inflate the code.
I'm also not seeing any real usage of the SD card, just an instantiation of the SD card driver and FAT filesystem.
I'm looking through your PowerShell script for the first time now, trying to see if there's something there that could be causing a problem. I do notice you're actually using g++ for compiling the C++ code, instead of gcc. Since you're not using any of the C++ standard library, it shouldn't matter, but I'd recommend you compile everything with gcc. The only differences between the two are linker symbol names (doesn't matter) and the fact that g++ links against the C++ STL by default... and the Prop doesn't have space for it so you shouldn't be using it anyway
Dont seem to be getting any errors about file space now which is weird.
Though getting issues with "___cxa_guard_acquire" and "___cxa_guard_release" in SPI::get_instance() for some reason.
For the TrackStructs.h, it's pretty much the same one from https://github.com/AidanHockey5/STM32_VGM_Player_YM2612_SN76489.
With you talking about it, i thought it would be because of it, though i have commented out the enums and variables at the bottom.
The guard_acquire and guard_release sounds familiar... but I don't remember what I did to resolve that. I'm not seeing any references to it in PropWare's source.
No need to use SPI::get_instance() if you don't want to though. It's just a "shortcut" for instantiating an SPI bus (it uses a local static variable inside the get_instance() function so that you get the same SPI instance everywhere throughout your code). You can achieve the same thing by just instantiating your own SPI bus and passing that in everywhere that you need.