Products categories

16Mhz SMD Crystal 5032 5*3.2 Patch 2 foot Crystal Oscillator


These AVR programmers are based on Thomas Fischl's USBasp design and connect to your computer's USB port. Not only are they quite compact (70x20mm), but the design is really elegant. The USB interface is achieved by using an atmega8 processor and the rest is done in firmware.

These AVR programmers are based on Thomas Fischl's USBasp design and connect to your computer's USB port. Not only are they quite compact (70x20mm), but the design is really elegant. The USB interface is achieved by using an atmega8 processor and the rest is done in firmware.

Being an Open source hardware (OSHW) project, released under the GNU General Public License, you are free to download the schematic and firmware from Thomas's website, but then you have a chicken and egg problem. In order to load the USBASP firmware onto the atmega8 on the programmer, yes you guessed it, you need an AVR programmer. Much easier to buy one fully built and programmed.

Some of the features include:

  • Allows you to read or write the microcontroller EEPROM, firmware, fuse bits and lock bits
  • Support for Windows, Mac OS X and Linux (will work on Windows 8.1)
  • 5 KB/sec maximum write speed
  • Software controlled SCK option to support targets with low clock speed (< 1.5MHz)
  • 10 pin ISP interface (conforms to standard ISP 10-pin pinout)

The latest Window Drivers are fully signed, so you can use them on Windows Vista and above without any issues. The driver will work on both 32 and 64 bit platforms. On Linux And Mac OS X no kernel driver is required, just use AVRdude and specify the correct port.

The programmer will work with a wide variety of Atmel AVR microcontrollers including the Atmega8a andAtmega168a. A full list is available on the specifications tab. The programmer will also work with a variety of software including

Included with the programmer is a 10 pin ISP cable, as shown in the main photo. The programmer is ideal for use with our AVR development board and kits.

At Protostack we like to eat our own dogfood, so we use the USBASP programmers extensively. Every one of our AVR tutorials was done using a USBASP programmer. We really like them and hope you will too.



Size: 70 x 20 x 9mm
Supported Software: AVRDude 5.2 or higher
Supported Microcontrollers:
Mega Series
ATmega8 ATmega8A ATmega48 ATmega48A ATmega48P
ATmega48PA ATmega88 ATmega88A ATmega88P ATmega88PA
ATmega168 ATmega168A ATmega168P ATmega168PA ATmega328
ATmega328P ATmega103 ATmega128 ATmega128P ATmega1280
ATmega1281 ATmega16 ATmega16A ATmega161 ATmega162
ATmega163 ATmega164 ATmega164A ATmega164P ATmega164PA
ATmega169 ATmega169A ATmega169P ATmega169PA ATmega2560
ATmega2561 ATmega32 ATmega32A ATmega324 ATmega324A
ATmega324P ATmega324PA ATmega329 ATmega329A ATmega329P
ATmega329PA ATmega3290 ATmega3290A ATmega3290P ATmega64
ATmega64A ATmega640 ATmega644 ATmega644A ATmega644P
ATmega644PA ATmega649 ATmega649A ATmega649P ATmega6490
ATmega6490A ATmega6490P ATmega8515 ATmega8535  
Tiny Series
ATtiny12 ATtiny13 ATtiny13A ATtiny15 ATtiny25
ATtiny26 ATtiny45 ATtiny85 ATtiny2313 ATtiny2313A
Classic Series
AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
CAN Series
PWM Series

Heatsink , Chip cooling 22x22x10MM

high-quality CPU cooler heatsink routing chip cooling 22 * 22 * 10MM

Floor thickness: 2MM

Tooth thickness: 1.2MM

Tooth pitch: 2.96MM

Number of blades: 6

PIC18F4520 - 8-bit PIC Microcontrollers

Working with digital inputs and outputs is fundamental to circuit design, and PIC microcontrollers add versatility to design by allowing programming and re-programming of the logic associated with input and output pins. In this way, one PIC microcontroller can take the place of many pre-programmed digital logic ICs.



Available Pins

With the exception of the positive voltage supply and ground pins, all pins on the PIC18F4520 can be used as digital I/O, however a few other pins (shown in grey below) are commonly utilized for communication instead of digital I/O. 


Digital Outputs Example

This section uses an example to describe how to setup and write digital outputs using a PIC18F4520.

Sample Code

Program to blink one LED on and off every half second.

First include header file with definitions for specific PIC. Set fuses. HS is type of external clock, low voltage programming (LVP) is off, and the watchdog timer (WDT) is off. External clock frequency of 20 MHz is specified.

  #use delay (clock=20000000)

Define pin names to be used in the main program. See header file for currently defined pin names.

  #define LED_0 PIN_C0

Begin main body of program. Notice main is a function of "void". This is a more explicit way of saying main is a function of nothing. Using main() is equivalent. Every program is required to have a function called "main".

  void main(void) {

Setup an infinite loop, using a while statement.


Turn LED on and off by setting its pin low or high, with a delay between each switching.


Circuit Diagram


Digital Output Ports Example

The PIC18F4520 has digital I/O pins organized into five ports. Ports A-D consist of eight pins each, while Port E has only three, although some of these pins are primarily used for communication. The diagram below shows the layout of the different ports on the PIC18F4520 microcontroller. 


Sample Code

Program to count in binary from 0-7 and display on LEDs.

First include header file with definitions for specific PIC. Set fuses. HS is type of external clock, low voltage programming (LVP) is off, and the watchdog timer (WDT) is off. External clock frequency of 20 MHz is specified.

  #use delay (clock=20000000)

Define variables to be used in main program. Both are defined as 8-bit numbers, with count already being assigned a value while temp is left unassigned.

  int count = 0;
  int temp;

Begin main body of program.

  void main(void) {

Set Port D to be an output (0). The SET_TRIS_X function can also be used to set ports to be inputs (1).


Use while to create an infinite loop.


Assign the value of "count" to Port D, thus displaying it on the LEDs connected to Port D.


Check the value of "count", and either increment it or reset it to zero.

        else {
           count = 0;}

Circuit Diagram


50A Dual Channel Motor Drive Module

Description :

This motor driver works with single channel max 50A load capacity. This module performs far better than MC33886 or L298 motor driver, especially in terms of motor speed control and power efficiency.

This drive has a brake function, which can quickly stop the motor. And the operation is very easy.The drive module contains a full-bridge driver chip and MOSFET with low internal resistance. The full-bridge driver IC minimizes the switching loss of MOSFET and improves power efficiency.

MOSFET is current impact-resistant type, with internal resistance of 0.003 Ohm. MOSFET channel can be opened quickly to improve the motor's speed curvature, and also brake the motor quickly. This function can make the car start or stop quickly.

This driver module  can work under the PWM duty cycle of 0% -98%.

Electronic Parameter :

1、Peak current (Load): 50A

2、Recommend max working current(Load): 20A

3、Power VCC (Load): 0V~30V

4、Recommend power vcc(load) : 12V ~ 26V

5、Control VCC: 4V~12V

6、Control TTL Voltage; 2.5V ~ 12V

Notice : 

1) : Control TTL voltage means the High voltage of the control pins (EN, LPWM, RPWM, DIS).

2) : The stable max working current is 20A while load vcc is between 12V~30V. The current is restricted by heat dissipation. Current, we don't add any heat radiator on the board.So if the current is over 20A, the heat may melt the sldering tin and cause problems. If you want it working stable at higher current, you should add radiator.

3) : Power VCC is recommended to be higher than 12V if your load is large-current devices. While over 12V, the MOSFET is working fully and its power consumption is small. So the heat will be less. If your load current is not large and just several  Amperes, the power VCC can be as low as 3V.

Interface :

We are trying to let this driver be compatible with Arduino and non-Arduino users. We leave holes on the PCB and so mount long-pin felmale hearders to plug in Arduino. If you are non-Arduino user, leave the holes alone. 

Above in the red box are for Arduino. We will ship the long-pin female headers with this module. 





To improve performance while with large current load. you could add soldering tin on the routs shown below. 



Dimension :

PCB Size: 52.3mm x 63.9mm

Mount Hole: 44.4mm x 57.0mm, 3mm Diameter

High: 12.4mm(without long-pin headers) or 26.4mm (with long-pin headers)

Control :

Basically the control is very easy.

* Rotate forward: EN = HIGH, RPWM = PWM, LPWM = HIGH, DIS = vacant

* Rotate reverse: EN = HIGH, RPWM = HIGH, LPWM = PWM, DIS = vacant

* Stop and brake: EN = HIGH, RPWM = HIGH, LPWM = HIGH, DIS = vacant

* Stop but not brake: EN = 0, RPWM = HIGH, LPWM = HIGH, DIS = vacant

* Prohibit : EN = X, RPWM = X, LPWM = X, DIS = HIGH

For Arduin users : 
                  Correction in below image Channel A.....LPWM.......arduino pn 11 NOT 5. 


Please Note :

1、Smaller PWM duty will get higher speed.

2、 PWM frequency should be 1Khz ~ 60Khz. Smaller frequency could get it work but not in perfect performace.It may increase the module's resonse time, but very slight in nanosecond level.We can't sense it. Default frequency of Arduino PWM is 0.5Khz. In our test, the default frequency could get it work very well. But remember, for better performance, the recommended frequency is 1Khz ~ 60Khz. In our library, we set the pwm frequency over 1Khz.

Document Download :

Library for Arduino

Product list :

1、50A Dual-Channel Motor Drive Module x 1

2、6 Pin Female pins for Arduino x 2

3、8 Pin Female pins for Arduino x 2

Note: by default, the female pins are not soldered on the module.   

Universal battery Socket Holder for CR2032 CR2025 battery cell

Battery Mount for CR2025 CR2032

1.5K 0805 SMD Resistor( 20pcs packet)

1.5k 0805 SMD Resistor


This is an aluminum heatsink kit used for cooling the chips on Raspberry Pi. Comparing to other heat sink, it has been attached with thermal conductive adhesive tape, allowing the Raspberry Pi to cool more efficiently. Besides, the installation is simple, what you need to do is to remove the heatsink protection and stick it on Raspberry Pi.

Comes with 3 plates, of which 2 small and 1 large.


Why do you need to put a heatsink on your Raspberry Pi?

  • Reduce the risk of hardware failure because of overheating
  • The heatsink is a must for the overclocking

Package Includes

  • 1x 14mm(L) x 14mm(W) x 5mm(H) SoC Heatsink
  • 1x 9mm(L) x 9mm(W) x 4mm(H) Voltage Regulator Heatsink
  • 1x 9mm(L) x 9mm(W) x 4mm(H) LAN9512 Heatsink
All heatsinks come with thermal tap attached at the bottom

Install Instructions

  • Make sure the chip modules are free from dirt and grease
  • Peel the protective liner on the base of the heatsink
  • Affix the heatsink on the chip modules and apply firm pressure

IPX u. FL Connector

uFL connectors are very small surface-mount parts used when an external RF antena is desired but a big bulky SMA connector takes up too much space. We use this part on our GPS and WiFi boards, they're great! Chances are your antenna doesn't use uFL as the main connector, in which case you should check out our uFL to SMA and uFL to RP-SMA adapter cables. These are also panel-mountable for a nice look. These are surface-mount but they're not too tough to solder, just watch out that the part is symmetric but only one of the end pads connects to the antenna pin!

This component is in our EAGLE CAD library, called ANTENNA_UFL

100K 0603 SMD Resistor( 20pcs packet)

100K 0603 SMD Resistor