Quantcast
Channel: Davide Gironi blog
Viewing all 196 articles
Browse latest View live

Bad Ragaz Fuzz - Germanium Fuzz pedal

$
0
0

Here i present a Germanium Fuzz Pedal I've recently build.

It happens that a friend of mine was about to throw away a late 60's record player. This record player was in his old house, the case of the player get wet and unusable due to a loss in the ceiling. This friend also throw away a steel boxfrom ELESTA AG, the plate reads: Bad Ragaz, which sounds like Bad Boy in a mix of italian and english.


I have disassemble it and take all the components out, to my surprise it contains a bounch of germanium transistors. So i decide to build this pedal.

The pedal design is simple, I just stared from the Vox ToneBlender original schematics, which is a Fuzz i really like, and change some values to match the sounds i like more with the components I have.


I've used two PNP germanium transistor: the SFT337, and the AC142. Then I changed the original ToneBlender fixed collector resistor with a Bias potentiometer, that define the Badness of the sound, because we are talking about a Bad Ragaz.


As a side note I must admin that altough germanium transistor sounds goods, they are slighly more difficult that to drive, as example microphonics noise can happens, and noise more in general it's around the corner.

Find below the schematics.


And the original Vox ToneBender



Notes
  • read risk disclaimer
  • excuse my bad english

Guitar pickup wax potting

$
0
0

I've a telecaster copy by Tradition Guitars, it's a tobacco sunburst from 2005 and it sounds pretty good for the price.


Times ago i shift the default ceramic pickup with a set of Alnico 5 Vintage Plus TRT1 by ToneRider. Those pickups sounds very very good! Indeed, I want to mount those pickup on another Telecaster model I've, but I do not want to leave the Tradition TL without Alnico, so, I've buy a set of FLEOR Vintage Alnico 5 pickups from China for less than 20Eur with shipping.
The set it's composed of course by a neck and a bridge pickup for Tele syle guitar, they are wax potted, magnets are Alnico 5, and the resistance almost fits the specification, namely neck is 6k7 and bridge is 6k3.


I was skeptical about those pickups, the delivery was really fast just 2 weeks, when mounted I have to change my mind. The Fleor set sounds as vintage as the TonerRider, the bridge one it's a little bassy sounding in contrat to the ToneRider, but overall they have really a good "feeling".
BUT, there's a BUT here, cause we are speaking about guitar pickup potting on this post, the bridge one was microphonic, as soon as I plug the overdrive on it starts hissing.
I've read comments from other buyer of Fleor, no one has microphonic issues, so I think mine was just an oversight.
To me this is the opportunity to learn how to pot a pickup, in fact so i did, and with the wax potting I've solved all the issues.
I decide to disassemble this pickup and pot it.
Guitar pickup potting is a process whereby the pickup coil are encaplusated in a substance that inhibits the coil movement that may cause oscillations and so hissing. Many new pickups are potting using epoxy glue, but old and vintage pickups use wax.
When I remove the tape around the coils of the bridge pickup I've notice that it was potted, but the wax does not soaks coils under the tape, it seems to me that the employee that pot this pickup forgot to leave this enough time in wax or do pot with the tape on it.

Warning! Paraffin is flammable and fumes may be toxics. Do pot in open environment. Potting is made at high temperature, pay attention to your skin. Everything you do at your own risk.

Here is the recipe I've used:
  1. 80% paraffin + 20% beewax
  2. put this mixture in a pot, then the pot in waterbath till the wax liquefy
  3. check the temperature, it should be something around 60degree
  4. put the pickup in wax, try to prevent the pickup to touch the pot
  5. leave the pickup there for almost 20 minutes
  6. take the pickup out and clean with a rag, then wait till it cools down
While potting you should see small air bubbles that cames out from the pickup, that's normal it's the air between coils that leaves the space to the wax.
I've pot both the pickup, just in case.





Reassembling the bridge pickup I've put the tape back, then wrap a cord on the pickup just to give it a vintage look.
To my surprise when i mount the pickups back, they both still works, and microphonics issue was gone!
This is how I potted the pickup, of course I'm not an expert on this field, so if you have suggestions or tricks put comments below.

Notes
  • read risk disclaimer
  • excuse my bad english

HX711 load cell amplifier library for AVR ATmega

$
0
0

HX711 is a precision 24bit ADC IC designed for weigh scales and industrial control applications to interface directly with a bridge sensor.

A load cell is a transducer that is used to create an electrical signal whose magnitude is directly proportional to the force being measured.

The library you can find here is usefull to implement a weigh scale using the HX711.


References used to implement this library are
This HX711 Arduino library, https://github.com/bogde/HX711
And that other library here https://github.com/getsiddd/HX711

Methods to get raw values and unit values from the HX711 are provided.
Also you can find function to calibrate the IC.

Before using this IC you have to calibrate it against the load cell used.
The calibration task is split in 2 steps:
1) The tare raw value offset needs to be obtained, To perform this task you have to run the calibrate step 1 function without any weight on the load cell.
2) Using the tare raw value and a know weight put on the scale you can capute the scale value that is used to obtain the weighted value.
For this reason is important that the reference weight has a well know value.


Once you have obtained the scale value, you can use it to get weight, and you can also perform a new tare without having to calibrate the scale again.

The sample provieded contains all the step needed to calibrate the sensor and obtain raw and unit values.

This library was developed on Eclipse, built with avr-gcc on Atmega8 @ 1Mhz.


Code

Notes
  • read risk disclaimer
  • excuse my bad english

D01: 2*15W guitar amplifier built using salvaged parts

$
0
0
-- ref 2013 --


The D01, litterally Discarica 01, is a guitar solid state amplifier build from salvaged parts.


Speakers are from a ready-to-be-trashed TV, the wooden case is something laying around here waiting to be trashed, some of the components are taken apart from old devices, like the transformer.
Of course there's something new in this amplifier, but most of the parts comes from savaged hardware.


The preamplifier it's based on the Descrete FET Guitar Preamp by J. Donald Tillman (http://www.till.com/articles/GuitarPreamp/). It's a J201 N-channel JFET based preamp that sounds really good.
The signal goes than to a clean/dstortion selection switch.
The distortion section it's based on a modded version of the Electra Distortion Pedal, that runs with just one 2N2222 NPN transistor. The distortion section has its own volume.


The output is then routed to the main volume and then to the main amplifier board.
The amplifier board it's based on the TDA7297 2*15W dual bridge amplifier. It costs just a few euros the complete board shipped with headsink, so this time I've buy this one.


The two speakers are 4ohm, savaged from an old TV.
The power section of my built consists of a 220V to 15V transformer with a 30W output current. Because the rectified voltage was a little too high for my circuit I use a simple DC/DC stepdown LM2596 board to reduce the voltage to 9V.


I assembled all those things in a wooden case build from some recycled boards.


I must admit that this amp sounds really nice, it has a nice vintage look, and the distortion section sounds really fat to me, although of course its has not a big output.




Notes
  • read risk disclaimer
  • excuse my bad english

AVR ATmega UV meter using ML8511

$
0
0

This device is a UV meter built on top of an ATmega8 microcontroller and a ML8511 UV sensor.
It measures UV light intensity and the UV index.


The ultraviolet index or UV index is an international standard measurement of the strength of sunburn-producing ultraviolet (UV) radiation at a particular place and time. It is a linear scale, with higher values representing a greater risk of sunburn. The purpose of the UV Index is to help people effectively protect themselves from UV radiation.


It features an LCD display that shows you all the measurements, a temperature sensor to correlate the output against temperature too, the UV led is attached to this meter makes this device particularly suitable to test glass UV lens. It also works with a 9V battery.
The LCD displays UV light intensity in mW/cm2, UV index, current temperatore, a light intensity offset, that this the difference from two values of UV, and the UV wavelength measured.
The light intensity offset is usefull to measure the real UV intensity reduction of a lens for example.
In my case the UV led mounted is a 3W@365nm, so I set the wavelength to 365, but one can change it using the menu that is accessible by long pressing the Select button.


For further information on the sensor library please take a look at my blog post here: http://davidegironi.blogspot.com/2018/05/uv-sensor-ml8511-avr-atmega-library.html.



Code

Notes
  • read risk disclaimer
  • excuse my bad english

Use a MCP4728 DAC with AVR ATmega

$
0
0

The MCP4728 device is a quad channel, 12bit voltage output DAC. It also has EEPROM embedded.
The DAC is driven using the I2C interface.

This library implements an ATmega driver for this IC.


The selected I2C library is the one proposed by Peter Fleury, you can find it here: http://homepage.hispeed.ch/peterfleury/avr-software.html

This library can drive up to 8 IC, depending on the MCP4728 selected address.

Each individual channel can be powered down, then wake up.
User for setting gain, raw output value and voltage value is provided. Also values can be stored to IC EEPROM.

The reference voltage can be set as internal, that is 2.048V, or external.

The sample provided output a sine wave, or a voltage output test.

The max output voltage depends on the gain and the voltage reference selected, if external voltage is selected as reference the gain is omitted.


The sample schematics contains also an output stage build up using a LM358 opem with a non-inverting configuration.
In non-inverting configuration the Gain is R2/R1 + 1, given R2 the resistor between out and - input, and R1 the resistor beteen - input and GND. The sample gain of 3.2 amplifiy the input signal taken from the DAC by 3.2, of course the output voltage can not exceed the power supply voltage of the opamp. For this reason if you supply the LM358 with a 12V supply, a sample output voltage of 2.4V will became 7.68V output.
The output current is limited to 20mA for a sink load and 40mA for a source load.
By simply adding a power MOSFET you can amply the output current that can be draw.

This project has been developed and tested on an ATmega8 running at 8Mhz.

Code

Notes
  • read risk disclaimer
  • excuse my bad english

My Ruby Amp Bassman mod small bass amplifier

$
0
0

The Ruby Amp it's a small instrument amplifier based on the LM386 IC.


Original circuit can be found in the http://www.runoffgroove.com/ruby.html page.
Basically this amplifier is composed by an N-Channel JFET input buffer that adjust the impedance of the instrument pickup. The speaker driving job it's done by the LM386.



You can find an in-depth analysis of this small amplifier in the electrosmash.com page here: https://www.electrosmash.com/ruby-amp-analysis.
The circuit I propose here it's the Ruby Amp with Bassman mod plus a Distortion mod switch.
I've removed the original amplifier circuit of a junked Creative Subwoofer from a Creative SBS 390 2.1 system, and replaced it with the one I've built.


The PCB was design in EagleCAD and printed from a chinese PCB service. The one you find here it's the revised version of the video one. The circuit is the same, I just changed a bit the layout.
I must say this amplifier sounds pretty good to my ears. It's not that loud, but it's enough to play at home.



Notes
  • read risk disclaimer
  • excuse my bad english

Drive an MCP49XX series DAC with an AVR ATmega

$
0
0

digital-to-analog converter (DAC) is a system that converts a digital signal into an analog signal.

The MCP4901, MCP4902, MCP4911, MCP4912, MCP4921, MCP4922 are DAC converters by Microchip.
They have 1 or 2 channel output, 8, 10 or 12 bit buffered voltage output.
The interface used to drive those IC is the SPI.


Driving that IC is pretty simple, expecially if you have a dedicated SPI hardware interface, like many microchip has.
The ATmega8, used in this example has a dedicated SPI Control Register (SPSR) that one can use to setup the SPI interface.

This library can drive more then one MCP49XX of the same series at the same time, this is done just by selecting the chip using a SS channel for each one.

A few functions are available in order to set a raw value for the DAC channel, a selected voltage, to power the IC down or up, and to get the actual raw value.
On compile time you have to set ports to use, and the MCP49XX family.



The sample schematics contains also an output stage build up using a LM358 opamp with a non-inverting configuration.

In non-inverting configuration the Gain is R2/R1 + 1, given R2 the resistor between out and - input, and R1 the resistor beteen - input and GND. The sample gain of 3.2 amplifiy the input signal taken from the DAC by 3.2, of course the output voltage can not exceed the power supply voltage of the opamp. For this reason if you supply the LM358 with a 12V supply, a sample output voltage of 2.4V will became 7.68V output.

The output current is limited to 20mA for a sink load and 40mA for a source load.

By simply adding a power MOSFET you can amply the output current that can be draw.

The example is provided runs a sine wave output or a selected voltage output.

All the setup parameters are included in the mcp49xx.h file.

The library proposed here can be ported to other microcontroller without difficulties.

This library was developed on Eclipse, built with avr-gcc on Atmega8 @ 8MHz.


Code

Notes
  • read risk disclaimer
  • excuse my bad english

Linux Mint on Z83-F Intel Atom X5-Z8350 mini PC

$
0
0

The Z83-F is a mini PC from Minis.

It has 4GB of memory and 64GB of flash storage, the CPU is Intel Atom X5-Z8350. Speaking of connectivity, it has a pair of USB 2.0 ports, a single USB 3.0 port, an HDMI port (with 4K support), an SD card slot, a VGA port, an Ethernet port and a headphone-microphone combo. This mini PC also inclues a dual-band 802.11a/b/g/n Wi-Fi adapter and Bluetooth 4.0 one. No fan inside, it just has a big heat sink for thermal dissipation.
Mine comes with Windows 10 Pro pre installed.
Find below the top and bottom view of the board of this mini PC.



Unluckly Windows is a big beast, the poor Atom processor is not able to give a good experience to the user. Also after a while it stucks on the Windows logo.
I would like to use this PC as a second house desktop, so the main use of this PC would be browsing and remote connections.
Using Windows, even with Chrome or Firefox the browing experience is so sad, slow and smooth page scrolling and lags on Youtube videos. For this reason I choose to try a linux installation on this PC.
The MinisForum is the place to look at, if you would like to install any other than Windows, or to solve any problem related to your Minis PC.


I choose the Linux Mint 19.1 Xfce version. Compered to Cinnamon version, Xfce uses less resources and for this reason the user experience is smoother. By the way Xfce is a lightweight desktop environment, for the purpose of this PC it's enough.
The installation procedure is simple, like any other installation at first you have to prepare the USB install drive, I've used Rufus for this.
Then at boot press the Delete button to enter the BIOS during startup, and press F7 to select the startup item.
Install Linux Mint on the main drive.
After you have installed it, at the first boot you have to fix WiFi and audio.
The audio chip of this PC is the bytcr-rt5651, WiFI is brcmfmac43455.
I've prepared two script, one for audio, and the other for WiFi. The scripts simply updates the driver for both the chip.
The audio enabler does the following actions:
sudo cp -rf bytcr-rt5651 /usr/share/alsa/ucm
sudo cp asound.state /var/lib/alsa
sudo cp blacklist_snd_hdmi_lpe_audio.conf /etc/modprobe.d/
The WiFi enabler simply move a single file:
sudo cp brcmfmac43455-sdio.txt /lib/firmware/brcm/
You can download the installation script at the following location:
https://sourceforge.net/projects/davidegironi/files/dev-install/Z83-F_linuxmint19.1_audio-video_v1.zip/download
Then you have to unzip that file, under the Z83-F_audio folder run install.sh to enable the audio chip, under the Z83-F_wifi run install.sh to enable the wifi chip. The following commands will set install.sh as executable, and run it.
sudo chmod a+x install.sh
sudo ./install.sh
Now reboot your PC, you should now have the WiFi chip enabled, as the audio chip.


With Linux Mint installed, this PC to me is now "usable" at least for browsing.
As i tell you, I'll use this PC for remote connections too, to use this capability just install the Remmina package, if you need it, install also the rdp package using the following commands:
sudo apt-get install remmina remmina-plugin-vnc remmina-plugin-rdp

Notes
  • read risk disclaimer
  • excuse my bad english

WiiPoser: a Wii Nunchuck + led matrix + pan/tilt servo laser pointer frame

$
0
0
- ref 2013 -


WiiPoser is Wii Nunchuck + led matrix + pan/tilt servo laser pointer frame.
I've build this frame to test the Wii Nunchuck library years ago.
Nunchuck is a wii 2-axis joystick, two buttons and a 3 axis 2g accelerometer.
You can find the nunchuck driver here: http://davidegironi.blogspot.com/2012/11/avr-atmega-wii-nunchuck-library-01.html


This is just an unsuefull frame built to test some libraries.
Behind the canvas of the frame there's a 5x5 led matrix driven through a bunch of general purpose NPN transistors.


The main controller it's an ATmega8, running @8Mhz.
There's a pan/tilt servo bracket that moves the laser pointer.


The Wii Nunchuck drives the servos pointer.
One of the Nunchuck button change the led view mode, in mode one just one led is on, in mode two just one led is off.
The second button of the Nunchuck switch the laser pointer on and off.
The Nunchuck joystick is used to select which led has to be powered on or off.


If no movment is perceived the frame goes in a demo mode, the demo mode moves the servos and switch on and off the leds in a random mode.



Code

Notes
  • read risk disclaimer
  • excuse my bad english

An ATmega brushless sensorless motor driver v02

$
0
0

Brushless electric motor (BLDC motors) are synchronous motors that are powered by a DC electric source via an integrated inverter/switching power supply, which produces an AC electric signal to drive the motor.
For an introduction to BLDC motors, you can take look at my sensored motor driver post, here: http://davidegironi.blogspot.it/2013/09/a-simple-brushless-sensored-motor.html or you can browse the internet, you will find there is a lot of litterature about BLDC motors.


This library implements a brushless sensorless motor dirver for AVR ATmega.
To write this library I take inspiration from the library above:

This library take inspiration from:
The code i propose is written, tested and compiled using avrgcc over an ATmega8 running at 16Mhz.
I've also tested a version of this code on ATmega8 running at 8Mhz.
The aim of is project is to build a faily simple bldc driver one can embed and easly modify in order to meet their own needs.

There are of course driver that performs better than this one, so if you are looking for best performance and you are using an ATmega micro, i suggest you to take a look at the SimonK firmware (https://github.com/sim-/tgy) or the BLHeli firmware (https://github.com/bitdump/BLHeli).

My previos driver you can find on links above does not fully implements PWM, also the brushless sensorless version to detect Zero Crossing reads the ADC voltage insted of using the internal ADC comparer.

Like the previos driver, this one implements a speed and direction (clockwise and anti-clockwise) controller.

Speed and direction can be set using the proper function, the speed have to be set using a 0 to 100 interval. 0 will stop the motor, direction has defined macro available for CW and CCW set.

In the sample main file the speed is driven by an RC input library, binded to the external interrupt input PIN.
For the test project the RC signal generator is a servo tester.
The RC reader library can be found here: http://davidegironi.blogspot.com/2018/03/an-avr-atmega-rc-control-signal-reader.html
Settings for this library can be changed on the rcin2.h file.

The bldcsetup.h file containst the main settings. As example there you can find the RC input library enabler.

This driver implements 4 PWM schemes:
  • H PWM L ON: PWM is performed on the ON channel
  • H ON L PWW: PWM is performed on the OFF channel
  • H PWM ON: PWM is performed on UWV channels every 60degrees, starting from U ON-ON
  • H ON PWM: PWM is performed on UWV channels every 60degrees, starting from V OFF-NULL
The PWM scheme is the way the power gates bridge is controlled in order to drive the motor.
One can chose the PWM scheme in the bldcsetup.h file.

The main.c file is a sample running project that use this library to run a motor.

bldcsetupmicro.h file contains specific microcontroller definition, this file should allow the implementation of this library over others than the ATmega8 microcontroller. It contains ADC registry settings and TIMER settings.

This driver can run on many board pinout, input/output PIN can be changed in the bldcsetupboard.h file.
The adc mux schema represent the order of PIN chosen as Zero Crossing detection depending on the running step.

The commutation sequence is defined in the bldc.h file.
By default it is set as follow (first group is the U bridge switch, second is the V, third is the W):
  • Step 1: 10-01-00
  • Step 2: 10-00-01
  • Step 3: 00-10-01
  • Step 4: 01-10-00
  • Step 5: 01-00-10
  • Step 6: 00-01-10
The picture below represent the commutations:


The interface with the user consists in a bounch of function that performs:
  • initialization of the library
  • speed selection or retrive
  • direction selection or retrive
  • speed retrive in RPM
  • debug function to retrive the status of the driver

Two TIMER are implemented:
  • TIMER PWM: works as the PWM emitter, it emit the commutation to the power bridge according to the selected step
  • TIMER MAIN: select the step to emit, depending on speed and direction selection. It works in three modes:
    • startup mode: perform the startup sequence of step
    • emission mode: select the commution step to run and switch to non emission mode
    • non emission mode: check the BEMF for Zero Crossing detection, once the ZC is detected, the mission mode is triggered
Two error detection strategies are implemented, both the strategies can be enabled or disabled at compile time. ZC detection error and Max Ticks between steps detection. Both the strategies trigger a motor startup when the max number of errors is reached. The ZC detection errors makes a +1 increment whenever a ZC crossing should be detected but it was not. The Max Ticks between steps makes a +1 increment whenever a step happens.

The RPM speed estimation is performed assuming the TIMER A runs at a fixed frequency.

Further improvement can be made on the whole driver, expecially the startup stage.

Code

Notes
  • read risk disclaimer
  • excuse my bad english

An ATmega brushless sensored motor driver v02

$
0
0

Brushless electric motor (BLDC motors) are synchronous motors that are powered by a DC electric source via an integrated inverter/switching power supply, which produces an AC electric signal to drive the motor. Hall sensored motors uses hall effect sensors or a rotary encoder to directly measure the rotor's position.
For an introduction to BLDC motors, you can take look at my sensored motor driver post, here: http://davidegironi.blogspot.it/2013/09/a-simple-brushless-sensored-motor.html


This library implements a brushless sensorled motor dirver for AVR ATmega.

tl;dr
Take this library: http://davidegironi.blogspot.com/2019/12/an-atmega-brushless-sensorless-motor.html
Set BLDC_DRIVETYPE to BLDC_DRIVETYPE_SENSORED

This is exacly the same library as the previous linked, so, for further information on this library please look at the link above.
There are just a few difference due to the hall sensor presence. The motor position this time it is discovered using hall sensors insted of using the the ZC crossing detection.
When we get the hall sensor status, we can select the next hall sensor status we expect after the step emission. The hall sensor status expected to current status is defined in the bldc.h file.
The picture below reports the commutation step agains the next status expected.


Once again, this is a simple implementation of a sensored driver, there are improvements that can be made to make this driver works even better. The purpose of this implementation is to offer a simple yet hackable way to run a bldc sensored motor.


Code
  • find the source code for this project on the sensorless post linked above

Notes
  • read risk disclaimer
  • excuse my bad english


AVR Brushless motor driver PWM scheme samples

$
0
0

A three-phase brushless motor it is usually drive by six-state commutation step sequence.
The commutation sequence drive the motor coils in order to make it spin.
The picture above represent a standard commutation scheme, each line is the motor coil status.


Given a 360 degree commution space, each commuation happens takes a 60 degree space.
A coil it is usually driven by mosfet bridge.
The coil can be drive on or off, but we can also drive it in PWM.
The PWM scheme is the way the power gates bridge is controlled in order to drive each motor coil.

In the AVR bldc driver here:
http://davidegironi.blogspot.com/2020/01/an-atmega-brushless-sensored-motor.html

I've implemented 4 PWM scheme.

H PWM L ON: PWM is performed on the ON channel


H ON L PWW: PWM is performed on the OFF channel


H PWM ON: PWM is performed on UWV channels every 60degrees, starting from U ON-ON


H ON PWM: PWM is performed on UWV channels every 60degrees, starting from V OFF-NULL



See above the signal sample recordered using a CD-ROM motor.

H PWM L ON sample


H ON L PWW sample


H PWM ON sample


H ON PWM sample



Notes
  • read risk disclaimer
  • excuse my bad english

D03: the "LESA Boogie" guitar amplifier

$
0
0

I've built this guitar amplifier from a 50's turntable with speakers.
This turntable was built by LESA (Laboratori Elettrotecnici Società Anonima), which sounds like Electrotechnical Laboratories of an Anonymous Company.


It happens that this turntable was left in an house with water leaks, the water was running just over the turntable, luckly speakers was intacts.
Because i like the turntable front and the speakers case, i decide to build a small guitar amplifier our of that piece.


As a side note to this project, the main PCB of this turntable contains some germanium transistor that I've use to build this Germanium Fuzz guitar pedal: http://davidegironi.blogspot.com/2019/02/bad-ragaz-fuzz-germanium-fuzz-pedal.html
Stage one was the building of the case.


I've glued and screwed two speakers, a hole between the two speakers was drilled for the cables.
Then on top of the speaker I drill some holes for potentiometers and panel devices.
On the back panel I put the power plug with fuse and power button.
Once I was sure that the case was correctly built it was time for the interesting stage, the electronic.
I've a +-13V 80VA transformer that I savage from an old HiFi system, so I can build something with dual rail supply.


The design reference I use are the schematics of the following amplifiers:
  • Marshall MG10
  • Fender Frontmain 10g
  • Vox Pathfinder 10
The power stage is pretty simple, just a bridge rectifier, capacitors, two resistors used for voltage reduction, and two zener diode for the +V and -V of the opamps.
The preamplifier uses a TL072 opamp, the input stage rectify the guitar high impedance and gain the signal of 8.9.


The second stage is the overdrive channel, which is also TL072 based. This channel is enabled by the bypass selector, that is simply a DPDT switch.
The gain of the overdriver in my construction is fixed, cause I do not want to drill an hole for a gain potentiometer, instead I want to use one button of the original amplifier.
So in my design I can switch between a crunch/soft gain overdrive to an overdrive/high gain.
It would be easy to mod this amp adding the gain potentiometer for a more accurate setting.
You could simply add a 1M pot instead of the gain fixed resistors.


The tone stack it's based on the Fender 6G5 circuit with some little mods.
The signal then goes to a PT2399 based reverb. It's rectified by the TL072 that fits the signal for the amplifier board.


The reverb board has two trimmers, one for the feedback signal, the other for the delay time. Adjusting the trim the reverb sounds change. The two trimmer are in parallel with two resistors, a switch on the amplifier select which resistor is enabled, this way I can select between two different reverb styles.


The amplifier is based on the TDA2030A IC. It's basically the datasheet sample with some fleavours and signal filtering additions.


Speakers are obviously old. They comes with a woofer and a tweeter, joined togeter using a single capacitor filter. The original speaker impedance was 3.2ohm. In order to connect the amplifier board to the speaker I've wire the two speaker using a single filtering capacitor.


The amplifier sounds and looks pretty good to my hear and eyes.
Furthermore it's a LESA and I have an apartment in Lesa (https://it.wikipedia.org/wiki/Lesa), a town on the Major Lake. Guess where this amplifier is built for?





Notes
  • read risk disclaimer
  • excuse my bad english

3 kind of Ruby Amp: Standard, Bassman and Hiwatt with distortion mod

$
0
0

I've introduced you the Ruby Amp here http://davidegironi.blogspot.com/2019/08/my-ruby-amp-bassman-mod-small-bass.html when I was talking about my bass amplifier 1W amp.
The Ruby Amp is a small guitar amplifier built around the LM386 IC.

This time i present you 3 kind of Ruby Amps from my collection.


Then the first one, it's a standard one, straight like the one of the runoffgroove.com site http://www.runoffgroove.com/ruby.html with a gain control.



Second one is a Bassman mod one, with a distortion switch that pump up the LM386 gain to it's limit. It was built on a PC speaker case.



Last one, the third, like the previous, was built on a PC speaker case, but this time it's an Hiwatt mod, again it cames with distortion switch.



All those you see above, I've built using a PCB board I've design.

Then some bonus pictures of the first one I've built. It's a standard one without gain pot. It was built on a prototyping board, it was 2010.



Most of them runs on a 9v supply voltage, some on 12v.
A personal note on the supply, if you are using a high to low voltage transformer and a rectifier to get your supply voltage, use big caps or even better a voltage regulator like the LM7809 if you want to avoid noise from your power line.

As you can see, I've always use salvaged parts, even that, they sound pretty well to my ears.
I've built others, always using recovered case and parts.
Although I've never use those amps in a record they sounds good, are simple to build and portable, so if you need one small amp at your friend house or during a BBQ, those are the amps.

Notes
  • read risk disclaimer
  • excuse my bad english

NRI G-13.mft parallel coin acceptor to Serial adapter

$
0
0

The NRI G-13.mft by Crane (https://www.cranepi.com/) is a versatile and high secure coin validator.
It can be programmed using the propretary WinEMP software and PC interface, or event it has some DIP Switch that can be used to program the device.
Unluckily it does not come with a UART interface. But it features a "machine tester" I/O interface we can use to track the inserted coins.


On page 50/51 of the Technical Documentation for NRI G-13.mft G-13.mft parallel Standard, Casino and AMU Models (from Version /4) 05.05 Hns/WP/ds Edition 1.2 BA.G13MFTPAR4-GB, we find the specification for the interface we could use.



For the G-13.mft standard/Casino model – vending machine 10pin interface, we notice that
PIN 1 is the GND while PIN 2 the VCC, we can use those pin to power the device on.
Moreover, if we scope on the PIN3,4,7,8,9,10 we may notice that as the datasheet said, the signal is active low when a coin is inserted on the specific line.


Because those PIN also inhibit a signal line we can even instruct the coin acceptor to disable a specific coin line. This will not be the case we are investigating here, I'm only interested in getting the coin signal.
For this reason I just connect the output of the Coin signal line, with a pullup resistor to our microcontroller.
That's easy, now it's just a pin reading matter, with a bit of debounching.


The schematics itself is simple. The main microcontroller is an ATmega8. The UART to USB adapter chip is the Silab CP2102, attached to a microUsb port.


For this project I've also design the PCB, which i prototype using a chinese PCBA service. We are able to build the final board after 3 prototype, that's because I'm not a pro in the PCB design, but I've to start somewhere. Then the company I work request 100 boards production from the chinese company. It was the first time that I try the PCBA service of a company, think this was a good experience, to start with a small and simple board like this one.



Code, Schematics and PCB

Notes
  • read risk disclaimer
  • excuse my bad english


AppDressBook: Address Book app that synchronizes contacts using a custom API server

$
0
0

AppDressBook is an Address Book app that synchronizes contacts using a custom API server.
It is useful for companies or associations that's want to share contacts using a unique application.
They just have to build their own server that provides the contact list and eventually an authentication method, then the server url can be shared with people engaged and used in this app.


AppDressBook is Open Source and it's built using React Native.
It works both on Android and iOS. Although it's not yet published on Apple Store. You can find the Android app here at the Google Play Store.
The backend server itself it's pretty simple, in the Docs folder you can find all the json schemas for the routes you have to serve.
Ther's a simple test server written in node.js published with the application code, you can find it in the appdressbookapisample folder. I've implemented a C# server for my company. Building the API server is really a simple job. Contacts can be secured by username and password validation. Contacts can of course be synced according to the logged in user. You can even chose to deploy your contacts without authentication.



When the application is executed for the first time, the API server must be filled. Then that server is beeing asked for settings. If authentication is required user has to authenticate, if not contacts can be synced instantly.
Contacts list is cheked against the server each 10 minutes, using the hash of the list, this is to prevent bandwith consumption.
The application itself is simple, and customizable for your needs.


Code

Notes
  • read risk disclaimer
  • excuse my bad english


My Score Keeper: a simple app to track score of your games

$
0
0

My Score Keeper is a simple app that allows your track score of your games.
You can add multiple Games, each games may have many Match and each match many Rounds. You can add as much Players as you need. Points are recorded so you can take a look at the full historical points list.


A Dice tool and the Countedown Timer are also included. Just tap on the dice to generate a random number, or use the Countdown Timer to time your Round. The free Backup and Restore cloud agent allows your data to be upload on a temporary cloud space you can use to restore to another device just in case. My Score Keeper is Open Source, and it's built using React Native.
You can find the app on the Google Play Store. It's not published yet on the Apple Store, but it works with iOS too.
The app reley on the Realm database.
The first app screen is the Game one, all the Games are listed here. User can create a new math or select one listed. Long tapping on the game enters the edit/delete mode.
Inside the Game screen, user can add Match. When a Match is selected, Players needs to be added. Players of course can be removed or added whenever the user wants. When a new Round is added the user can select which are the Players that play that round.


During the Round points can be added or substracted to each Players.
A couple of tools can be enabled on the Round screen.
A Dice, that select a random number between an interval and a Countdown Timer.
Database can be backupped on a cloud service that is hosted free on Firebase. The web folder contains the code of the backup server.
Backup are rotated, this way the server space does not fill up.


Code

Notes
  • read risk disclaimer
  • excuse my bad english


Homemade PCB Cutting Machine

$
0
0

Here i present you my homemade PCB Cutting Machine.
It's a simple DIY project to build, there are just a few key points to watch out for.

This Cutting Machine it's based on a drill 12V DC motor. I've a broken electric drill, that's the donor of the motor. My motor is a ZG-RS550S-12V.



Then the inkjet printer sliding mechanism, once again something broken you can find without problem.
The sliding mechanism need to be prepared to make the motor fit on the ink sled.

I've buy the motor bracket and the motor adaptor, and of course the circular blade.
As for the circular blade mine it's a 50mm diamond plated steel disc used for Dremel. I've found that this kind of blade works better on PCB than saw blade with teeth like the ones for wood.


Then we need the piece of wood that will be base of our machine. We need to saw away the line where the cutting blade will slide in.

The key point now is to assembly all the pieces in such a way that is all perpendicular, that will affect the 90 degrees cutting that we want on our PCB. As you notice on my Cutting machine I've used big screw to mount the sliding mechanism, the hole that I've drill on the mechanism it's a bit larger then the screw, this way i can arrange the mechanism horizontally and vertically.



I've tried it with PCB up to 2mm without problem.

The PWM board it's a 6..90V, 15A.
A switch is attached in order to enable the PWM board, or to skip it and give the motor the full speed.

Notes
  • read risk disclaimer
  • excuse my bad english

BLDC motor driver v02 speed test

$
0
0

In my last video about the new BLDC driver I've written you can find here http://davidegironi.blogspot.com/2019/12/an-atmega-brushless-sensorless-motor.html, I was talking about testing other motors.

Here you can find a sample speed test I've run over a Brushless motor Mistery D2025-5000.

To test the speed I've used a cheap Laser Tachometer DT-2234C+.
I've put tape around the motor and mark just one side of the motor tape with a black marker.

Results are pretty good, the motor spins at almost 11000rpm  running at 12V, with a current consumption of 0.9A.
Don't forget that this driver is not made for performance, this driver was built to be fairly simple and easly modify in order to be easly embedded in any project. If you are looking at performance, you should take a look at the SimonK firmware (https://github.com/sim-/tgy).

Testing the the same motor running at almost the same speed 11000rpm with SimonK firmware, results in a current consumption of 0.8A. However with SimonK i was able to run this motor at 30000rpm, 

This means that even if my driver is not build with performance in mind, it still runs pretty well.

I've tested the driver over other BLDC motor I've around here, all the motor spins without much problems. Startup sequence is good.

However, if you want to trick up performance, you can still make changes to the bldcsetupmotor.h file. In that file you can find various parameters used during the ramp startup time as long as the running time, like the ZC error setting and PWM timer counter settings, that will set the speed.

One last word about this BLDC driver that makes me happy, an article has been published on the italian Elettronica In (http://www.elettronicain.it/) magazine.


Notes
  • read risk disclaimer
  • excuse my bad english
Viewing all 196 articles
Browse latest View live