As far as I recall, each character makes a poop every other time a hungry heart empties.
Here's a way to determine how often a character makes poop:
Allow all hungry hearts to empty. (But don't allow happy hearts to empty.) When the last one empties, your character will beep for attention. Write down the time. (For example: 2:03 PM) Then feed it a meal that fills only one hungry heart. After some time, that hungry heart will empty, and your character will call for attention again. Write down the time. (For example: 2:28 PM) Feed it as many meals as you want now. The difference in the times is how long it takes to empty one hungry heart (2:28 PM - 2:03 PM = 25 minutes.) Multiply this by 2 to find out how long between poops. (25 minutes x 2 = 50 minutes.) At one of the two times it called for attention, your character will have made a poop. Add the interval you calculated (50 minutes) to the last time it made a poop. This is when it will next poop. (For example, if you saw a poop at 2:28 PM, you can expect another to appear at 3:18 PM.) A few minutes before that time, start watching the screen. When you see the wiggle lines, activate the toilet icon. If you're successful, your character will poop in the toilet instead of on the floor. This will fill some of their happy hearts. (Note: you can not "toilet train" your character. S/he will never use the toilet on her/his own. The next time you miss the wiggle lines, s/he will poop on the floor again.)
Note: all the times used above are only examples. Each character will have different times, from a few minutes for new-born babies, to an hour or more for oldies.